Alt dizinlere yayılmış belirli bir türdeki tüm dosyaları bulmaya çalışıyordum ve benim amacım için sadece dosya adına ihtiyacım vardı. Ben yol bileşeni üzerinden sıyırma denedim basename
, ama ile çalışmadı 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.
Bu varyasyonlardan herhangi biriyle aynı şeyi (tam olarak aynı hata) alıyorum:
$ find . -name '*.deb' -print0 | xargs -0 basename
$ find . -name '*.deb' -print | xargs basename {}
Öte yandan, bu beklendiği gibi çalışır:
$ find . -name '*.deb' -exec basename {} \;
foo
bar
baz
Bu, güncel Cygwin ve Debian 5.0.3'te olur. Benim teşhisi, xargs'ın bir nedenden dolayı iki giriş satırını basename'e geçirmesidir, ama neden? Burada neler oluyor?