Unix:在各自的文件夹中递归解压缩.zip文件

时间:2012-07-24 10:04:58

标签: bash shell unix unzip

我在文件夹中有许多压缩文件,如a.zip b.zip等。我想解压缩这些并放入像a,b这样的目录。你能给我一些unix脚本吗?

3 个答案:

答案 0 :(得分:6)

不应该太难(未经测试!):

#!/bin/bash

for zip in *.zip ; do
    dir=${zip%.zip}
    mkdir "$dir"
    unzip -rd "$dir" "$zip"
done

答案 1 :(得分:1)

您可以在unix中使用unzip实用程序,如下所示:

    #!/bin/bash

    for f in *.zip
    do
        echo "unzipping $f"
        unzip $f -d ${f%.*}
    done

在目录中运行此脚本将根据需要解压缩其中的所有zip文件,例如a.zip,b.zip将分别解压缩到目录a和b。

答案 2 :(得分:1)

This previous post帮助我实现了同样的功能;我甚至创建了一个脚本来帮助我记住我的电脑:

$ ls *.zip|awk -F'.zip' '{print "unzip "$0" -d "$1}'|sh

同样,您可以创建alias来执行bash功能:

$ alias munzip='for f in *.zip; do unzip -d "${f%*.zip}" "$f"; done'

对于干运行,事先进行测试:

$ alias testmunzip='for f in *.zip; do echo unzip -d "${f%*.zip}" "$f"; done'

只是认为将这些相关信息保存在一个页面上会有所帮助,以防其他人正在寻找相同的效果。