2013-11-22 12 views
6

私が実行したい:bashの:-exec findコマンドにと&

./my_script.py a_file & 

を... .my_formatで終わる現在のフォルダ内のすべてのファイルに対して、私が行います

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

それは動作しません。 -execパラメータに&を含めるにはどうすればよいですか?

+2

重複可能[findコマンドの "exec"機能がバックグラウンドでプログラムを起動できますか?](http://stackoverflow.com/questions/853451/can-the-find-commands-exec-feature-start-a-background-in-the-background) – eran

+0

1年後にそれを指摘するのにポイントがありますか? –

+1

私はこの問題に直面したときにこの問題に遭遇しました。それは間違いなく悪い質問ではありません。この時点で、それは重複であると言えば、将来の読者に他の回答があることを通知する方法です。 – eran

答えて

8

はこれを試してみてくださいジョブ制御を理解できないcライブラリ呼び出し - &シンボル。シェルは "バックグラウンドでこのコマンドを実行する"ので、-exec sh ...呼び出しを理解します

+0

ああ、ありがとう。だから、 'sh'はすべてのLinuxマシンの基本的なシェルですよね? –

+0

最近のlinuxディストリビューションは/ bin/shをposix-shに準拠したシェルにシンボリックリンクします。 – holygeek

+0

実行ごとに新しいシェルを作成すると、なぜ実行されたコマンドをバックグラウンドで追加するのが になるのでしょうか? –

4

コマンドを見つけ、これを試してみてください:検索は、標準のexec(3)ファミリの1つを使用してコマンドを実行しますので、あなたの試みはうまくいきませんでしたほとんど考えられる理由がある

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

find . -type f -name "*.my_format" -exec bash -c './my_script "$1" &' - '{}' \; 
関連する問題