当前位置: 首页>>技术教程>>正文


bash – 一次解压缩多个文件

问题描述

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

最佳思路

如果您确实想并行解压缩它们,则可以这样做

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 {}

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

parallel unzip ::: *zip

次佳思路

GNU parallel命令非常适合此类情况。后:

$ sudo apt-get install parallel

然后

ls *.zip | parallel unzip

这将使用尽可能多的核心,使每个核心都忙于解压缩,直到完成所有工作。

第三种思路

您可以使用以下命令:

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

cd /path

然后执行以下命令解压缩所有.zip文件:

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

第四种思路

如果您的文件夹中有许多.zip文件,并且您想解压缩所有文件,则打开终端并使用以下命令转到您的文件夹:

cd <path_to_folder>

现在,使用以下命令解压缩所有.zip文件:

ls *.zip | xargs -n1 unzip

第五种思路

您可以像这样将find与-exec一起使用,

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

如果文件名称中有空格,这将起作用。

第六种思路

非终端方法。

只需选择zip文件,右键单击一个,然后选择extract here即可。您可以一次选择全部或仅几个zip文件。

参考资料

本文由Ubuntu问答整理, 博文地址: https://ubuntuqa.com/article/9453.html,未经允许,请勿转载。