2013-11-22 13 views
6

Ben çalıştırmak istediğiniz find komutu -execbash:</p> <pre><code>./my_script.py a_file & </code></pre> <p>... <code>.my_format</code> ile sona geçerli klasördeki tüm dosyalar üzerinde, bu yüzden yapmak: ve &

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

ama işe yaramıyor. &'u -exec parametresine nasıl dahil etmeliyim?

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

olası yinelemesi [Bul komutunun 'exec' özelliği arka planda bir program başlatır mı?] (Http://stackoverflow.com/questions/853451/can-the-find-komutları-exec-özelliği-start-a-program-in-the-arka plan) – eran

+0

bir yıl sonra bunu işaret eden bir nokta var mı? –

+1

Bu soruna bakarken bu soruyu anladım ve kesinlikle kötü bir soru değil. Bu noktada, bir kopyası, gelecekteki okuyuculara başka cevapların mevcut olduğunu bildirmenin bir yoludur, hepsi bu. – eran

cevap

8

bu deneyin:

+0

Ah, teşekkürler. Bu yüzden, tüm linux makinelerindeki temel kabuk, değil mi? –

+0

Son linux distros symlinks/bin/sh posix-sh uyumlu bir kabuğa. – holygeek

+0

Her bir yürütme için yeni bir kabuk oluşturursak, neden arka planda çalıştırılan komutu eklememiz gerekir? –

4

bu komut bulmak deneyin

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

bulmak standardının exec(3) ailesinin birini kullanarak komutu çalıştırır çünkü işe yaramadı sizin girişimdir çoğunlukla muhtemel nedeni c iş kontrolü anlamayan kütüphane çağrıları - & sembolü. Kabuk, "bu komutu arka planda çalıştır" ı anlar, dolayısıyla -exec sh ... çağırma

İlgili konular