shell习题-批量更改文件名

需求:

找到/123目录下所有后缀名为.txt的文件
批量修改.txt为.txt.bak
把所有.bak文件打包压缩为123.tar.gz
批量还原文件的名字,即把txt.bak改回txt

模拟环境:

[root@liang ~]# mkdir /123 
[root@liang ~]# cd /123/
[root@liang 123]# touch {a..d}.txt
[root@liang 123]# touch {1..5}.txt
[root@liang 123]# touch {1..5}.tst
[root@liang 123]# touch {a..d}.tst
[root@liang 123]# for i in `seq -w 05`;do mkdir ${i}.txt;done

脚本答案:

[root@liang 2018-06-15]# cat rename.sh 
#!/bin/bash
Dir=/123
suffix1=txt
suffix2=txt.bak
Find="find . -type f -name"


cd $Dir


for i in `$Find "*.${suffix1}"`
do
        /usr/bin/rename $suffix1 $suffix2 $i
done


/usr/bin/tar zcf 123.tar.gz `$Find "*.${suffix2}"`


if [ $? -eq 0 ];then
        for i in `$Find "*.${suffix2}"`
        do
                /usr/bin/rename $suffix2 $suffix1 $i
        done
fi 


猜你喜欢

转载自blog.csdn.net/liang_operations/article/details/80705477