我读过关于这个主题的类似问题,但没有一个能帮助我解决以下问题:
我有一个如下所示的 bash 脚本:
#!/bin/bash
for filename in /home/user/Desktop/emak/*.fa; do
mkdir ${filename%.*}
cd ${filename%.*}
mkdir emak
cd ..
done
此脚本主要执行以下操作:
- 遍历目录中的所有文件
- 使用每个文件的名称创建一个新目录
- 进入新文件并创建一个名为“emak”的新文件
真正的任务做一些比创建“emak”文件更昂贵的计算......
我有大约数千个文件要遍历。 由于每次迭代都独立于前一次,我会喜欢 将它拆分到不同的处理器(我有 24 个内核),这样我就可以同时处理多个文件。
我之前读过一些关于并行运行的帖子(使用:GNU),但我没有看到在这种情况下应用它的明确方法。
谢谢
最佳答案
不需要并行
;你可以简单地使用
N=10
for filename in /home/user/Desktop/emak/*.fa; do
mkdir -p "${filename%.*}/emak" &
(( ++count % N == 0)) && wait
done
第二行暂停每第 N 个作业,以允许所有先前的作业在继续之前完成。
关于并行处理多个文件的 bash 脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33896949/