通过 Ubuntu 终端提取几个 zip 文件,每个文件放在同名的新文件夹中

通过 Ubuntu 终端提取几个 zip 文件,每个文件放在同名的新文件夹中

我有许多 zip 文件(、、、a.zip... ),我想通过终端将它们分别提取到与档案名称同名的新文件夹中(、、、... )。b.zipc.zipabc

实际上,我想要的是一个以后可以与 一起使用的解决方案find,因为我实际上有许多文件夹(2014,,, ...) 20132012每个文件夹都包含许多 zip 文件(a.zip,,,b.zip...)。

如果我做:

find . -name "*.zip"  -exec {} unzip \;

它将解压所有文件并将其放入各自的父文件夹中。

答案1

您应该能够使用 unzip 的-d选项为档案内容设置备用目录。

unzip -d a a.zip
unzip -d b b.zip

等等。在find表达式中,您应该能够使用 shell 参数扩展从 zipfile 的名称中得出目录的名称,例如

find . -name '*.zip' -exec sh -c 'unzip -d "${1%.*}" "$1"' _ {} \;

首先通过添加echoie进行测试

find . -name '*.zip' -exec sh -c 'echo unzip -d "${1%.*}" "$1"' _ {} \;

或者类似

while read -rd $'\0' f; do 
  unzip -d "${f%.*}" "$f"
done < <(find . -name '*.zip' -print0)

答案2

我自己来寻找这个,才意识到我已经用其他命令完成了这个,并且它可以应用于几乎任何其他东西,就像我已经做的那样。

查找方法毫无理由地过于复杂。

for i in *.zip; do unzip "$i" -d "${i%%.zip}"; done

答案3

简单使用

unzip '*.zip' -d /home/user/folder/

答案4

for z in *.zip; do unar -d "$z"; done

相关内容