2013-11-22 85 views
6

我想运行:庆典:-exec的find命令和

./my_script.py a_file & 

...在与.my_format结束当前文件夹中的所有文件,所以我做的:

find . -type f -name "*.my_format" -exec ./my_script {} & \; 

但它不起作用。我应该如何在-exec参数中包含&

+2

可能重复[可以查找命令的“exec”功能在后台启动程序吗?](http://stackoverflow.com/questions/853451/can-the-find-commands-exec-feature-start-a-program-in-the-the-background) – eran

+0

一年后有指出它的意义吗? –

+1

面对这个问题时,我遇到了这个问题,而且这绝对不是一个坏问题。在这一点上,提到它是重复的是一种通知未来读者其他答案可用的方式,就是这样。 – eran

回答

8

试试这个:

$ find . -type f -name "*.my_format" -exec sh -c './my_script {} &' \; 

的最可能原因,你的尝试没有成功是因为找到执行使用exec(3)系列标准之一的命令c库调用不了解作业控制 - &符号。 shell确实懂得“在后台运行这个命令”,因此-exec sh ...调用

+0

噢,谢谢。所以'sh'是所有linux机器上的基本shell,对吧? –

+0

最近的linux发行版symlinks/bin/sh到符合posix-sh标准的shell。 – holygeek

+0

如果我们为每次执行产生一个新的shell,我们为什么还需要在后台添加执行的命令 ? –

4

试试这个find命令:

find . -type f -name "*.my_format" -exec bash -c './my_script "$1" &' - '{}' \;