我的一个文件夹中有数千个 .zip 文件,我想使用命令或脚本将这些文件解压到自己的文件夹中。我希望多次运行解压过程。我该怎么做?
答案1
xargs
with-P n
可用于对多个文件并行运行程序。例如,下面并行运行 8 个实例unzip
。
cd directory-with-zip-files
find . -name '*.zip' -print0 | xargs -0 -n 1 -P 8 unzip
答案2
这将解决问题,在终端上运行它
for f in *.zip; do unzip $f -d ${f%.*}; done
好的,重新定义答案并考虑到评论:
在一个名为 unzip.sh 的文件中放入以下代码:
#!/bin/bash
LEN=${#}
COUNT=0
PROCESSES=20
ITERATE=$(( LEN/PROCESSES ))
for ((i=0;i<=ITERATE;i++))
do
LOWER=$(( i*PROCESSES+1 ))
HIGHER=$(( (i+1)*PROCESSES ))
./aux.sh ${@:$LOWER:$HIGHER} &!
done
在一个名为 aux.sh 的文件中放入以下代码:
#!/bin/bash
for f in $@; do unzip $f -d ${f%.*}; done
请记住通过在终端中输入以下内容来设置两个文件的执行权限:chmod +x unzip.sh aux.sh
现在您所要做的就是通过在终端中输入以下内容来执行脚本:./unzip.sh *.zip
答案3
如果 zip 文件中的文件位于各自的文件夹中,则更简单的解决方案是在 zip 文件文件夹打开的终端中输入以下内容:
解压“*.zip”
答案4
我最近不得不这样做,并决定尝试一下GNU并行。下面是使用并行执行的方法:
find . -type f -name '*.zip' | parallel --progress "unzip -q {}"
它将生成与机器上的核心数量相同的进程并解压缩每个文件。请参阅parallel examples
。