shell 命令解压缩zip文件夹并且对解压后的文件重命名(批量)

   最近因为要给第三方系统做中间件,需要对服务器中的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

 最后真心希望能帮到那些需要的人,廷尉写这个东西,浪费了很多时间

 

    原文作者:clf_java
    原文地址: https://blog.csdn.net/FZ_9426/article/details/103434903
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞