Saya mencoba untuk menemukan semua file dari jenis tertentu yang tersebar di subdirektori, dan untuk keperluan saya, saya hanya perlu nama file. Saya mencoba menghapus komponen jalur melalui basename
, tetapi tidak berhasil dengan 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.
Saya mendapatkan hal yang sama (kesalahan yang persis sama) dengan salah satu dari variasi ini:
$ find . -name '*.deb' -print0 | xargs -0 basename
$ find . -name '*.deb' -print | xargs basename {}
Ini, di sisi lain, berfungsi seperti yang diharapkan:
$ find . -name '*.deb' -exec basename {} \;
foo
bar
baz
Ini terjadi pada Cygwin dan Debian 5.0.3 yang terbaru. Diagnosis saya adalah xargs karena suatu alasan melewatkan dua jalur input ke nama dasar, tetapi mengapa? Apa yang terjadi di sini?