最近因为要给第三方系统做中间件,需要对服务器中的N个ZIP文件做解压和重命名处理,因此费了一番功夫后,写出如下脚本,希望可以帮到那些同样由此需要的人!
先说一下目录结构,在/home/test文件夹下有N个文件夹,例如2019.1 2019.2 2019.3 等等,同时在每个文件夹下有N个ZIP文件,例如
a.txt.zip b.doc.zip c.html.zip d.pdf.zip等等.因为每个zip文件中存在的名称都是一样的且没有后缀,例如都是test.因此需要对解压后的文件进行重命名,否则都会变成一个文件,且覆盖.
说完问题描述后,给大家看一下写的代码,在服务器上执行后,效果和预期的一样!
#!/bin/sh
#============ unzip the file ===========
Folder="/home/test"
for file in ${Folder}/*;
do
file_name=`basename $file`
cd ${Folder}/$file_name
(
for unzip in ${Folder}/$file_name/*.zip;
do
unzip_name=`basename $unzip`
rname=${unzip_name:0:${#unzip_name}-4}
unzip -o -O gbk $unzip_name && mv `unzip -l $unzip_name | awk '{if(NR == 4){ print $4}}'` $rname
# rm -f $unzip_name 是否删除
done
)
done
最后真心希望能帮到那些需要的人,廷尉写这个东西,浪费了很多时间