मैं जिस तकनीक का सबसे अधिक उपयोग करता हूं वह है find | xargs
। उदाहरण के लिए, यदि आप इस निर्देशिका की प्रत्येक फ़ाइल और इसके सभी उपनिर्देशिकाओं को विश्व-पठनीय बनाना चाहते हैं, तो आप ऐसा कर सकते हैं:
find . -type f -print0 | xargs -0 chmod go+r
find . -type d -print0 | xargs -0 chmod go+rx
-print0
विकल्प के लिए एक अंतरिक्ष के बजाय एक शून्य चरित्र के साथ समाप्त हो जाता है। -0
विकल्प अपने इनपुट उसी तरह बांट देता है। तो यह रिक्त स्थान के साथ फ़ाइलों पर उपयोग करने के लिए संयोजन है।
आप कमांड की इस श्रृंखला को हर लाइन आउटपुट के रूप में ले सकते हैं find
और इसे chmod
कमांड के अंत में चिपका सकते हैं ।
यदि आप जिस कमांड को अंत के बजाय बीच में इसके तर्क के रूप में चलाना चाहते हैं, तो आपको थोड़ा रचनात्मक होना होगा। उदाहरण के लिए, मुझे हर उपनिर्देशिका में बदलने और कमांड चलाने की आवश्यकता थी latemk -c
। इसलिए मैंने ( विकिपीडिया से ) प्रयोग किया :
find . -type d -depth 1 -print0 | \
xargs -0 sh -c 'for dir; do pushd "$dir" && latexmk -c && popd; done' fnord
इसका प्रभाव पड़ता है for dir $(subdirs); do stuff; done
, लेकिन उनके नाम में रिक्त स्थान वाली निर्देशिकाओं के लिए सुरक्षित है। इसके अलावा, अलग-अलग कॉल stuff
एक ही शेल में किए जाते हैं, यही वजह है कि मेरी कमांड में हमें वर्तमान निर्देशिका के साथ वापस लौटना होगा popd
।