一次解压缩多个文件

一次解压缩多个文件

我的一个文件夹中有 200 多个.zip文件。我不想一个一个地解压它们。我想使用单个命令或脚本提取它们。怎么做?

答案1

如果你真的想同时解压缩它们,你可以这样做

for i in *zip; do unzip "$i" & done

但是,这将为 N 个 .zip 文件启动 N 个进程,可能会对您的系统造成很大负担。要采用更可控的方法,一次只启动 10 个并行进程,请尝试以下方法:

find . -name '*.zip' -print0 | xargs -0 -I {} -P 10 unzip {}

要控制启动的并行进程数,请-P根据需要进行更改。如果您不想递归到子目录,请改为执行以下操作:

find . -maxdepth 1 -name '*.zip' -print0 | xargs -0 -I {} -P 10 unzip {}

或者,您可以安装GNU并行按照@OleTange 在评论中的建议并运行

parallel unzip ::: *zip

答案2

GNU并行命令非常适合这种类型的事情。之后:

$ sudo apt-get install parallel

然后

ls *.zip | parallel unzip

这将使用尽可能多的核心,使每个核心忙于解压缩,直到全部完成。

答案3

您可以使用以下命令:

首先将终端中的目录更改为包含 .zip 文件的目录:

cd /path

然后执行此命令解压所有.zip文件:

for z in *.zip; do unzip "$z"; done

答案4

-exec你可以像这样使用 find

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

将要如果文件名称中有空格,则可以工作。

相关内容