यह find
सीधे उपयोग से किया जा सकता है -exec
:
find . -name "*.xml" -type f -exec xmllint --output '{}' --format '{}' \;
क्या पारित कर दिया है करने के लिए -exec
प्रति टेम्पलेट मानकों के साथ पाया फ़ाइल एक बार सक्रिय किया जाएगा {}
वर्तमान फ़ाइल नाम के साथ प्रतिस्थापित किया जा रहा। \;
खोजने के आदेश के अंत पर बस लाइन समाप्त हो जाता है।
xargs
इस मामले में वास्तव में उपयोग आवश्यक नहीं है क्योंकि हमें xmllint
एक बार प्रति फ़ाइल इनवॉइस करने की आवश्यकता है क्योंकि इनपुट और आउटपुट फ़ाइल दोनों नामों को एक ही कॉल के भीतर निर्दिष्ट किया जाना चाहिए।
xargs
जरूरत इस बात की होगी कि कमांड को जिस जगह से ढूंढा जा रहा है वह एक समय में कई फाइलों पर काम कर रहा हो और वह सूची लंबी थी। आप इस मामले में ऐसा नहीं कर सकते हैं, क्योंकि आपको --output
विकल्प के लिए एकल फ़ाइलनाम पास करना होगा xmllint
। xargs
यदि आप बहुत सारी फ़ाइलों को संसाधित कर रहे हैं, तो आप बिना "तर्क सूची के बहुत लंबी" त्रुटि के साथ समाप्त हो सकते हैं। विकल्प के xargs
साथ फ़ाइल प्रतिस्थापित स्ट्रिंग का भी समर्थन करता है -I
:
find . -name "*.xml" -type f | xargs -I'{}' xmllint --output '{}' --format '{}'
find -exec
ऊपर के आदेश के समान ही करेंगे । यदि आपके किसी भी फ़ोल्डर में रिक्त स्थान हैं, जैसे रिक्त स्थान आपको और के -0
विकल्पों का उपयोग करने की आवश्यकता होगी । लेकिन का उपयोग कर के साथ विकल्प का अर्थ है जिसका अर्थ है केवल वैसे भी एक समय में 1 फ़ाइल पर कार्रवाई है, तो आप के रूप में अच्छी सीधे उपयोग कर सकते हैं के साथ ।find
xargs
xargs
-I
-L 1
find
-exec