解压一批文件

解压一批文件

当我尝试时

 unzip filename.zip

有用。但是,我需要解压缩一系列 zip 文件。

为什么是:

 find . -name "*.zip" -print0 | xargs -0 unzip

或者

 ls *.zip | xargs unzip

不工作?

在这两种情况下,我都会收到“警告:文件名不匹配:”消息。

答案1

您可以发出命令:

$ unzip '*.zip'

在这里寻找参考

答案2

您的命令不起作用,因为它们将所有文件填充到同一命令行中。虽然这适用于大多数程序,但unzip会将第一个参数作为 zip 文件,并将第一个参数之后的任何参数作为从中提取的文件。您需要为每个文件执行一次命令:

find . -name "*.zip" -print0 | xargs -0 -n1 unzip

或者

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

答案3

在 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

答案4

有一个比上面给出的循环更简单的解决方案,使用目录标志-d

unzip -o somefiles.zip -d $directoryPath

相关内容