我在同一目录中有一组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 {} \;&
答案 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行上的等效指令