在后台执行带有查找枪的外壳

时间:2019-05-12 11:17:19

标签: shell unix solaris

我在同一目录中有一组shell,我想执行所有开头都有结果的shell,例如:

result.sha
result.shb
result.shc
...

以下脚本的工作原理是执行所有具有匹配reg的shell,但是如何使每个shell在后台并行运行

find . -type f -name 'result.*' -exec sh {} \;

我已经尝试过了,但是没有用:

find . -type f -name 'result.*' -exec sh {} \;&

2 个答案:

答案 0 :(得分:3)

每批sh结果仅启动一次find并让它派生任意多的子流程,效率更高。

find . -type f -name 'result.*' -exec sh -c 'for arg do . "$arg" & done' _ {} +

. "$arg" &派生出一个已经运行的解释器的副本,并在其中运行"$arg"中的代码,避免为解释器的启动花费额外的时间。

答案 1 :(得分:1)

我认为您的解决方案在后台运行查找程序,而不是在后台执行每个shell脚本。我尝试使用find实用程序,但无法正常工作。但是,以下shell脚本将满足您的要求。

#!/bin/bash
for prog in result.*
do
    sh $prog &
done
exit 0

或1行上的等效指令