मैं उपनिर्देशिकाओं में फैले एक निश्चित प्रकार की सभी फाइलों को खोजने की कोशिश कर रहा था, और मेरे उद्देश्यों के लिए मुझे केवल फ़ाइल नाम की आवश्यकता थी। मैंने पथ घटक को अलग करने की कोशिश की basename
, लेकिन इसके साथ काम नहीं किया गया xargs
:
$ find . -name '*.deb' -print | xargs basename
basename: extra operand `./pool/main/a/aalib/libaa1_1.4p5-37+b1_i386.deb'
Try `basename --help' for more information.
मुझे इन दोनों में से एक ही चीज़ (बिल्कुल एक ही त्रुटि) मिलती है:
$ find . -name '*.deb' -print0 | xargs -0 basename
$ find . -name '*.deb' -print | xargs basename {}
दूसरी ओर, यह उम्मीद के मुताबिक काम करता है:
$ find . -name '*.deb' -exec basename {} \;
foo
bar
baz
यह अप-टू-डेट साइगविन और डेबियन 5.0.3 पर होता है। मेरा निदान यह है कि xargs किसी कारण से दो इनपुट लाइनों को बेसनेम करने के लिए गुजर रहा है, लेकिन क्यों? यहाँ क्या चल रहा है?