यह 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 फ़ाइल पर कार्रवाई है, तो आप के रूप में अच्छी सीधे उपयोग कर सकते हैं के साथ ।findxargsxargs-I-L 1find-exec