하위 디렉토리에 퍼져있는 특정 유형의 모든 파일을 찾으려고 노력했으며 내 목적으로는 파일 이름 만 필요했습니다. 를 통해 경로 구성 요소를 제거하려고 시도했지만 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가 어떤 이유로 든 두 개의 입력 줄을 기본 이름으로 전달하는 이유는 무엇입니까? 무슨 일이야?