33 当我尝试 unzip filename.zip 有用。但是,我需要解压缩一系列zip文件。 为什么是: find . -name "*.zip" -print0 | xargs -0 unzip 要么 ls *.zip | xargs unzip 不工作吗? 在两种情况下,我都会收到“警告:文件名不匹配:”消息。 command-line zip — 让·诺布尔托 source
48 您可以发出以下命令: $ unzip '*.zip' 请看这里供参考。 — vfbsilva source 我没有说清楚,但是它们不在同一目录中。因此,我需要find的输出。 — jeannoburto 4 谢谢。这可能完全符合实际问题,但这解决了我的问题。我正在尝试unzip *,它caution: filename not matched为每个文件返回了,但unzip '*.zip'完成了工作。 — 伊万
27 您的命令无法正常工作,因为它们会将所有文件都填充到同一命令行中。尽管大多数程序unzip都可以使用,但将第一个参数作为zip文件,并将第一个参数作为要从中提取的文件。您需要为每个文件执行一次命令: find . -name "*.zip" -print0 | xargs -0 -n1 unzip 要么 find . -name '*.zip' -exec unzip {} \; — 凯文 source 如果确实有很多文件,第二个似乎更好。(否则,它抱怨使用xargs的命令太长了) — Recct
5 在bash中,您还可以执行以下操作: for i in *.zip; do unzip "$i" done 也unzip可以进行-d切换,以便将输出定位到不同的位置。 例如: uzdir=/path/to/unzips for i in *.zip; do [ -d "$uzdir/$i" ] || mkdir -p "$uzdir/$i" unzip "$i" -d "$uzdir/$i" done — slm source
1 有一个比上面给出的循环解决方案简单得多的解决方案,请使用目录-d标志: unzip -o somefiles.zip -d $directoryPath — 阿迪亚·米塔尔(Aditya Mittal) source -d指定要提取到的目录,而不是要查找文件的目录。 — LegendaryDude