Stavo cercando di trovare tutti i file di un certo tipo sparsi nelle sottodirectory e per i miei scopi avevo solo bisogno del nome del file. Ho provato a rimuovere il componente path tramite basename
, ma non ha funzionato con 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.
Ottengo la stessa cosa (esattamente lo stesso errore) con una di queste varianti:
$ find . -name '*.deb' -print0 | xargs -0 basename
$ find . -name '*.deb' -print | xargs basename {}
Questo, d'altra parte, funziona come previsto:
$ find . -name '*.deb' -exec basename {} \;
foo
bar
baz
Questo accade su Cygwin e Debian 5.0.3 aggiornati. La mia diagnosi è che xargs sta per qualche ragione passando due linee di input a basename, ma perché? Cosa sta succedendo qui?