जवाबों:
-exec ... \;
एक के बाद एक आइटम चलाएंगे। इसलिए यदि आपके पास तीन फाइलें हैं, तो निष्पादन रेखा तीन बार चलेगी।
-exec ... {} +
आदेशों एक समय में एक से अधिक फ़ाइल ले जा सकते हैं के लिए है (उदाहरण के लिए cat
, stat
, ls
)। द्वारा मिली फाइलों को find
एक xargs
कमांड की तरह एक साथ जंजीर से बांध दिया जाता है। इसका मतलब है कम बाहर निकलना और छोटे ऑपरेशन के लिए, पर्याप्त गति का मतलब हो सकता है।
यहां 10,000 खाली फ़ाइलों को पूरा करने वाला प्रदर्शन डेमो है।
$ mkdir testdir
$ touch testdir/{0000..9999}
$ time find testdir/ -type f -exec cat {} \;
real 0m8.622s
user 0m0.452s
sys 0m8.288s
$ time find testdir/ -type f -exec cat {} +
real 0m0.052s
user 0m0.015s
sys 0m0.037s
फिर से यह केवल उन कमांड पर काम करता है जो कई फाइलनाम ले सकते हैं। यदि आपका कमांड ऐसा है तो आप उसके मैनपेज को देख कर पता लगा सकते हैं। यहाँ से सारांश है man cat
:
SYNOPSIS
cat [OPTION]... [FILE]...
एलिप्सिस का [FILE]...
अर्थ है कि यह एक से अधिक फ़ाइल ले सकता है।
+
केवल एकल आदेशों पर उपयोग किया जा सकता है और आपके पास {}
पंक्ति में बिल्कुल एक होना चाहिए । \;
कई शून्य से कई समूहों के साथ काम कर सकते हैं।
+
POSIX नहीं है, इसलिए यह गैर-लिनक्स सिस्टम पर उपलब्ध नहीं हो सकता है। चिंता की बात नहीं है अगर आप कभी भी प्लेटफॉर्म नहीं छोड़ते हैं, लेकिन यह जानना अच्छा है कि क्या आपको कभी सोलारिस का उपयोग करना है। :)
-exec <command> {} ';'
पर अपनी टाइपिंग में आसान होने के कारण (मैं टाइप को छू सकता हूं लेकिन मेरे पास सबसे अच्छी तकनीक नहीं है)।
-exec ... {} +
POSIX है। देखें: pubs.opengroup.org/onlinepubs/9699919799/utilities/…
-exec ... {} +
गया था । यह संभव है कि आपके द्वारा उपयोग किया जाने वाला Solaris का संस्करण उस POSIX मानक से पुराना हो (या पहले के संस्करण को लक्षित करता है)।
\;
निष्पादित कमांड होगीcat 1; cat 2; cat 3
। के साथ+
, निष्पादित कमांड होगीcat 1 2 3
।