我有很多 zip 文件a.zip, b.zip, c.zip, ...我想通过终端将它们中的每一个分别解压缩到新文件夹a, b, c, ... 中。
实际上,我想要的是一个我可以稍后使用的解决方案,find因为我实际上有很多文件夹2014、2013、2012,...每个文件夹都包含许多 zip 文件a.zip、b.zip等。如果我这样做了find . -name "*.zip" -exec {} unzip \;它将解压缩所有文件并将它们放入各自的父文件夹中。
ste*_*ver 91
您应该能够使用 unzip 的-d选项为存档内容设置备用目录。
unzip -d a a.zip
unzip -d b b.zip
Run Code Online (Sandbox Code Playgroud)
等等。在find表达式中,您应该能够使用 shell 参数扩展从 zipfile 的名称派生目录的名称,例如
find . -name '*.zip' -exec sh -c 'unzip -d "${1%.*}" "$1"' _ {} \;
Run Code Online (Sandbox Code Playgroud)
首先通过添加一个echoie 来测试它
find . -name '*.zip' -exec sh -c 'echo unzip -d "${1%.*}" "$1"' _ {} \;
Run Code Online (Sandbox Code Playgroud)
或类似的东西
while read -rd $'\0' f; do
unzip -d "${f%.*}" "$f"
done < <(find . -name '*.zip' -print0)
Run Code Online (Sandbox Code Playgroud)
小智 30
我自己来寻找这个,只是意识到我已经用其他命令完成了它并且它可以应用于几乎任何其他东西,就像我已经在做的那样。
find 方法无缘无故地过于复杂。
for i in *.zip; do unzip "$i" -d "${i%%.zip}"; done
Run Code Online (Sandbox Code Playgroud)
小智 8
简单使用
unzip '*.zip' -d /home/user/folder/
Run Code Online (Sandbox Code Playgroud)