问题描述
一个文件夹中有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文件。