特定の種類のすべてのファイルをサブディレクトリに広げようとしていましたが、私の目的のために必要なのはファイル名だけでした。パスコンポーネントを削除してみました basename
しかし、それは動作しませんでした 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.
私はこれらのバリエーションのどちらでも同じこと(全く同じエラー)を得ます:
$ find . -name '*.deb' -print0 | xargs -0 basename
$ find . -name '*.deb' -print | xargs basename {}
一方、これは期待どおりに機能します。
$ find . -name '*.deb' -exec basename {} \;
foo
bar
baz
これは最新のCygwinとDebian 5.0.3で起こります。私の診断では、xargsは何らかの理由で2つの入力行をbasenameに渡していますが、なぜでしょうか。何が起きてる?