需求:
找到/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 |