一次解压多个文件

一次解压多个文件

我的一个文件夹中有数千个 .zip 文件,我想使用命令或脚本将这些文件解压到自己的文件夹中。我希望多次运行解压过程。我该怎么做?

答案1

xargswith-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

相关内容