我的一个文件夹中有 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 {} \;
这将要如果文件名称中有空格,则可以工作。