gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-29 09:27:45 25 4
gpt4 key购买 nike

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

我有一个如下所示的 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com