को पैरामीटर के रूप में है कि स्क्रिप्ट के नाम से पारित के बाद से केवल आपका इंटरैक्टिव खोल केवल उपनामों के बारे में जानता है, क्यों न केवल xargs
के माध्यम से बाहर निकलने के बिना उपनाम चलाएं?
find . -iname '.#*' -print0 | while read -r -d '' i; do foobar "$i"; done
आप सुनिश्चित करें कि आपके फ़ाइल नाम उन में नई-पंक्तियों की जरूरत नहीं है कर रहे हैं (ick, इसलिए वे? होगा), तो आप इस
find . -iname '.#*' -print | while read -r i; do foobar "$i"; done
या बस find -iname '.#*' | ...
को आसान बनाने में कर सकते हैं, के बाद से डिफ़ॉल्ट निर्देशिका .
है और डिफ़ॉल्ट कार्रवाई -print
है।
एक और विकल्प:
IFS=$'\n'; for i in `find -iname '.#*'`; do foobar "$i"; done
कह बैश कि शब्द (डिफ़ॉल्ट: IFS=$' \t\n'
) नई-पंक्तियों पर ही विभाजित कर रहे हैं। आपको इसके साथ सावधान रहना चाहिए, यद्यपि; कुछ स्क्रिप्ट एक बदले $IFS
के साथ अच्छी तरह से सामना नहीं करते हैं।
इस कारण मैं बजाय मेरी ~/बिन फ़ोल्डर पर स्क्रिप्ट बनाने में से एक है बैश उपनाम बनाना। इस तरह, मैं अपने उपनामों को किसी भी खोल से उपयोग कर सकता हूं: बाश, जेडएसएच, आईपैथॉन या फिश। – Yoo
यहां एक समान (हालांकि समान नहीं है) प्रश्न है: http: // stackoverflow।कॉम/प्रश्न/9 7 9 453/कैसे-कर-i-use-aliased-command-with-xargs –