并行处理多个文件的 bash 脚本

2023-12-23

我读过有关该主题的类似问题,但没有一个可以帮助我解决以下问题:

我有一个 bash 脚本,如下所示:

#!/bin/bash

for filename  in /home/user/Desktop/emak/*.fa; do
    mkdir ${filename%.*}
    cd ${filename%.*}
    mkdir emak
    cd ..
done

该脚本基本上执行以下操作:

  • 遍历目录中的所有文件
  • 使用每个文件的名称创建一个新目录
  • 进入新文件并创建一个名为“emak”的新文件

真正的任务执行比创建“emak”文件更昂贵的计算......

我有大约数千个文件需要迭代。 由于每次迭代都独立于前一次迭代,我会喜欢 将其拆分到不同的处理器(我有 24 个核心)中,这样我就可以同时处理多个文件。

我读过一些关于并行运行的文章(使用:GNU),但我没有看到在这种情况下应用它的明确方法。

thanks


不需要parallel;你可以简单地使用

N=10
for filename in /home/user/Desktop/emak/*.fa; do
    mkdir -p "${filename%.*}/emak" &
    (( ++count % N == 0)) && wait
done

第二行暂停每个第 N 个作业,以便在继续之前完成所有先前的作业。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

并行处理多个文件的 bash 脚本 的相关文章