首页 > 解决方案 > 在for循环中并行

问题描述

我有一个包含约 200k 文件的目录,我想快速找到损坏/格式错误的 zip/RAR 文件

这是我们编写的简单 bash 脚本:

#!/bin/bash
path="/home/xyz/"
for filename in $(ls $path)

do
output=:$(7za t $path$filename);
if  echo "$output" | grep -q "Everything is Ok"; then
    echo "MATCH"
        else 
        echo "NOK_FILE:$filename"
fi


done;

所以测试 ~200k 文件大约需要 ~14 小时才能按顺序完成,所以我们需要在for循环中运行并行检查

我需要在大约 10 分钟内完成检查

我尝试了 StackOverflow 中提到的很多方法,但我找不到好方法

标签: bashshell7zip

解决方案


这是一条评论,但使用答案字段以获得更好的格式。这不能解决您的问题,但是您可以稍微清理一下脚本:

#!/bin/bash
path=/home/xyz/
for filename in $path/*;  do
    if 7za t "$filename" | grep -q "Everything is Ok"; then
        echo "MATCH"
    else 
        echo "NOK_FILE:$filename"
    fi
done

推荐阅读