Ich habe versucht, alle Dateien eines bestimmten Typs in Unterverzeichnissen zu finden, und für meine Zwecke brauchte ich nur den Dateinamen. Ich habe versucht, die Pfadkomponente über zu basename
entfernen, aber es hat nicht funktioniert mit 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.
Ich bekomme das gleiche (genau den gleichen Fehler) mit einer dieser Varianten:
$ find . -name '*.deb' -print0 | xargs -0 basename
$ find . -name '*.deb' -print | xargs basename {}
Dies funktioniert andererseits wie erwartet:
$ find . -name '*.deb' -exec basename {} \;
foo
bar
baz
Dies geschieht unter Cygwin und Debian 5.0.3. Meine Diagnose lautet, dass xargs aus irgendeinem Grund zwei Eingabezeilen an den Basisnamen übergibt, aber warum? Was ist denn hier los?