Estaba tratando de encontrar todos los archivos de cierto tipo distribuidos en subdirectorios, y para mis propósitos solo necesitaba el nombre de archivo. Intenté eliminar el componente de ruta a través de basename
, pero no funcionó 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.
Me sale lo mismo (exactamente el mismo error) con cualquiera de estas variaciones:
$ find . -name '*.deb' -print0 | xargs -0 basename
$ find . -name '*.deb' -print | xargs basename {}
Esto, por otro lado, funciona como se esperaba:
$ find . -name '*.deb' -exec basename {} \;
foo
bar
baz
Esto sucede en Cygwin y Debian 5.0.3 actualizados. Mi diagnóstico es que xargs está pasando por alguna razón dos líneas de entrada al nombre base, pero ¿por qué? ¿Que está pasando aqui?