shell脚本更改文件夹名称(删除文件夹中所有冒号)
整体步骤
- 分析文件夹结构
- 批量修改文件夹名称命令
文件夹目录结构如下:
|–图像数据
|–20190830
|–20190830rent
|–dw_2019_09_02_151221_000000_YSG20190723CD
|camera_test_a01.h264
|camera_test_a01.h264.timestamps
思路:
- 第1层for循环遍历./图像数据/目录下各日期文件夹,如20190830,20190831等;
- 第2层for循环遍历./图像数据/20190830/20190830rent;
- 第3层for循环遍历./图像数据/20190830/20190830rent/下dw*文件夹,同时运行更改文件夹命令。
批量修改文件夹名称命令:
`new=echo $f2|sed -e ‘s/\.//g’`
注意!!!
正则表达式中.
表示匹配除换行符以外的任意字符,如果不用转义字符\
,则将文件夹名称全部删除,因此会出现以下错误:
mv: missing destination file operand after 'dw_2019_09_04_165113_000000_YSG20190723CD'
Try 'mv --help' for more information.
整个脚本改名如下:
#!/bin/bash
function travFolder(){
flist=`ls $1`
cd $1
for f in $flist
do
if test -d $f
then
flist1=`ls $f`
cd $f
for f1 in $flist1
do
if test -d $f1
then
flist2=`ls $f1`
cd $f1
for f2 in $flist2
do
new=`echo $f2|sed -e 's/\.//g'`
#echo $new
mv $f2 $new
done
cd ../
fi
done
cd ../
fi
done
cd ../
}
dir=./图像数据/
travFolder $dir