假设我有多个目录:nmg_1, nmg_2,..., nmg_5
。
每个目录都包含两个子目录:fol, unf
。
在每个子目录中都有一个文本文件。
所以,我有这个脚本:run.sh
,即读取每个子目录中的某一行文本文件并输出另一个文件。因此,我想知道,有没有办法并行运行脚本,也就是说,脚本可以同时在多个子目录中运行?
答案 0 :(得分:3)
鉴于run.sh
一次对一个文本文件执行所需的处理,以下命令将使4个并行bash会话保持活动状态:
find -name "*.txt" -print0 | xargs -n 1 -P 4 -0 -I {} bash run.sh {}
来自man xargs
:
--max-procs=max-procs, -P max-procs
Run up to max-procs processes at a time; the default is 1.
If max-procs is 0, xargs will run as many processes as possible at a time.
Use the -n option with -P; otherwise chances are that only one exec will be done.