2013-11-22 2 views
6

मैं चलाना चाहते हैं: ...बैश: खोजने के आदेश में -exec और और

./my_script.py a_file & 

वर्तमान फ़ोल्डर कि .my_format के साथ समाप्त में सभी फाइलों पर, तो मैं कार्य करें:

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

लेकिन यह काम नहीं करता है। -exec पैरामीटर में मुझे & कैसे शामिल करना चाहिए?

+2

संभावित डुप्लिकेट [क्या खोज कमांड की "निष्पादन" सुविधा पृष्ठभूमि में एक प्रोग्राम शुरू कर सकती है?] (Http://stackoverflow.com/questions/853451/कैन-द-फाइ-कमांड-निष्पादन-फीचर-स्टार्ट-ए-प्रोग्राम-इन-द-बैकग्राउंड) – eran

+0

क्या एक साल बाद इसे इंगित करने में कोई बात है? –

+1

इस समस्या का सामना करते समय मुझे इस सवाल का सामना करना पड़ा, और यह निश्चित रूप से एक बुरा सवाल नहीं है। इस बिंदु पर, यह एक डुप्लिकेट का उल्लेख है भविष्य के पाठकों को सूचित करने का एक तरीका है अन्य उत्तरों उपलब्ध हैं, बस इतना ही है। – eran

उत्तर

8

इस प्रयास करें:

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

ज्यादातर संभावित कारण क्योंकि खोजने आदेश मानक के exec(3) परिवार में से एक का उपयोग कर कार्यान्वित आपके प्रयास काम नहीं किया है सी पुस्तकालय कॉल जो नौकरी नियंत्रण को समझ में नहीं आता - & प्रतीक। खोल "पृष्ठभूमि में इस आदेश को चलाने" को समझता है इसलिए -exec sh ... आमंत्रण

+0

ओह ठीक है, धन्यवाद। तो 'लि' सभी लिनक्स मशीनों पर मूल खोल है, है ना? –

+0

हालिया लिनक्स एक शेल में symlinks/bin/sh distros है जो posix-sh अनुरूप है। – holygeek

+0

यदि हम प्रत्येक निष्पादन के लिए एक नया खोल तैयार करते हैं तो हमें पृष्ठभूमि में निष्पादित आदेश जोड़ने के लिए की आवश्यकता क्यों होगी? –

4

प्रयास करें इस खोजने के आदेश:

find . -type f -name "*.my_format" -exec bash -c './my_script "$1" &' - '{}' \; 
संबंधित मुद्दे