2013-11-22 83 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" &' - '{}' \;