Tôi đã cố gắng tìm tất cả các tệp thuộc một loại nhất định trải rộng trong các thư mục con và vì mục đích của tôi, tôi chỉ cần tên tệp. Tôi đã thử tước thành phần đường dẫn qua basename
, nhưng nó không hoạt động với 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.
Tôi nhận được điều tương tự (chính xác là cùng một lỗi) với một trong các biến thể sau:
$ find . -name '*.deb' -print0 | xargs -0 basename
$ find . -name '*.deb' -print | xargs basename {}
Mặt khác, điều này hoạt động như mong đợi:
$ find . -name '*.deb' -exec basename {} \;
foo
bar
baz
Điều này xảy ra trên Cygwin và Debian 5.0.3 cập nhật. Chẩn đoán của tôi là xargs vì một lý do nào đó chuyển hai dòng đầu vào cho tên cơ sở, nhưng tại sao? Những gì đang xảy ra ở đây?