जैसा कि अन्य अध्यायों ने पहले ही उल्लेख किया है, xargs आपका मित्र है। यह वास्तव में एक शक्तिशाली उपकरण है और मैं इसे समझाने और एक आम गेटा के लिए एक समाधान प्रदान करने का प्रयास करूँगा।
क्या xargs इनपुट से एक लाइन लेता है, और इसे दूसरे कमांड में जोड़ता है, इनपुट में हर लाइन के लिए अन्य कमांड निष्पादित करता है। इसलिए टाइप करके locate foobar | xargs rm -f
, कमांड के आउटपुट को कमांड के अंत में पैच किया जाएगा rm -f
, और द्वारा उत्पादित प्रत्येक लाइन के लिए निष्पादित किया जाएगा locate foobar
।
गोत्र:
लेकिन क्या होगा अगर आपकी लाइन में रिक्त स्थान हैं जो पता लगाकर लौटे हैं? यह rm -f
कमांड को तोड़ देगा क्योंकि rm को दिए गए तर्कों को फाइल होने की आवश्यकता है (जब तक कि आप -r स्विच का उपयोग नहीं करते हैं), और फ़ाइल-पाथ को रिक्त स्थान से बचने या उद्धृत करने की आवश्यकता है।
xargs -i स्विच प्रदान करता है, इनपुट को कमांड में प्रतिस्थापित करने के लिए जो इसे जोड़ने के बजाय इसका अनुसरण करता है। इसलिए मैं सुझाव को बदलूंगा
locate foobar | xargs -ixxx rm -f 'xxx'
अगर अब फ़ाइलनाम निहित एपोस्ट्रोफिस द्वारा लौटाया जाता है तो केवल टूट जाएगा।
मुझे क्यूबी के साथ सहमत होना है, कि आपको rm -f का उपयोग करने में सावधानी बरतनी चाहिए ! -P फ्लैग का उपयोग xargs के लिए करें, या बस xbgs को फीड करने से पहले फाइवर को स्वयं चलाएं, या rm से -f ड्रॉप करें।
locate foobar | xargs -p -ixxx rm -f 'xxx'
rm -i
FooBar``