से man find:
-exec कमांड;
निष्पादित आदेश; सच है अगर 0 स्थिति वापस आ गई है। निम्नलिखित सभी तर्कों को ''; '' युक्त तर्क तक कमांड के तर्क के लिए लिया जाता है; सामना किया है। स्ट्रिंग '{}' को वर्तमान फ़ाइल नाम से बदल दिया जाता है जिसे हर जगह संसाधित किया जाता है यह कमांड के तर्कों में होता है, न कि केवल उन तर्कों में जहां यह अकेला है, जैसा कि कुछ संस्करणों में पाया जाता है। इन दोनों निर्माणों को शेल द्वारा विस्तार से बचाने के लिए ('\') के साथ भाग जाने या उद्धृत करने की आवश्यकता हो सकती है। '-Exec' विकल्प के उपयोग के उदाहरणों के लिए EXAMPLES सेकंड अनुभाग देखें। निर्दिष्ट कमांड प्रत्येक मिलान की गई फ़ाइल के लिए एक बार चलाई जाती है।
कमांड को शुरुआती डायरेक्टरी में निष्पादित किया जाता है। वहाँ -exec विकल्प के उपयोग के आसपास सुरक्षा संबंधी समस्याएं नहीं हैं;
-exec कमांड {} +
-Exec विकल्प का यह संस्करण चयनित फ़ाइलों पर निर्दिष्ट कमांड चलाता है, लेकिन कमांड लाइन अंत में प्रत्येक चयनित फ़ाइल नाम को जोड़कर बनाया गया है ; कमांड की कुल संख्या का मिलान की गई फ़ाइलों की संख्या से बहुत कम होगा। कमांड लाइन उसी तरह से बनाई गई है जिस तरह से xargs अपनी कमांड लाइन बनाता है। कमांड के भीतर '{}' के केवल एक उदाहरण की अनुमति है। कमांड को शुरुआती डायरेक्टरी में निष्पादित किया जाता है।
इसलिए, जिस तरह से मैं इसे समझता हूं, वह \;प्रत्येक फ़ाइल के लिए एक अलग कमांड निष्पादित करता है find, जबकि \+फाइलों को जोड़ता है और उन सभी पर एक ही कमांड निष्पादित करता है। \, एक एस्केप वर्ण है, तो यह है:
ls testdir1; ls testdir2
बनाम
ls testdir1 testdir2
मेरे शेल में ऊपर करने से आपके प्रश्न में आउटपुट का पता चलता है।
आप कब उपयोग करना चाहेंगे इसका उदाहरण \+
मान लीजिए दो फाइलें, 1.tmpऔर 2.tmp:
1.tmp:
1
2
3
2.tmp:
0
2
3
के साथ \;:
find *.tmp -exec diff {} \;
> diff: missing operand after `1.tmp'
> diff: Try `diff --help' for more information.
> diff: missing operand after `2.tmp'
> diff: Try `diff --help' for more information.
यदि आप उपयोग करते हैं \+(परिणामों को संक्षिप्त करने के लिए find):
find *.tmp -exec diff {} \+
1c1,3
< 1
---
> 0
> 2
> 30
तो इस मामले में यह diff 1.tmp; diff 2.tmpऔर के बीच का अंतर हैdiff 1.tmp 2.tmp
ऐसे मामले हैं जहां \;उपयुक्त है और \+आवश्यक होगा। इसके \+साथ प्रयोग करना rmएक ऐसा उदाहरण है, जहाँ यदि आप बड़ी संख्या में फ़ाइलों को निकाल रहे हैं तो प्रदर्शन (गति) बेहतर होगा \;।