답변:
find . -name *foo* | xargs -r ls -lah
작동합니다.
-exec +
(또는 -exec \;
) 를 사용하는 것입니다 . 옵션 xargs
과 함께 사용하는 것만 안전합니다. -0
즉 xargs
, 항목을 NULL 바이트 (\ 0)로 구분 하기 위해 파이프하는 모든 명령을 지시 해야합니다. find
당신 과 함께 할 수 있습니다 -print0
. xargs의 -0 및 find의 -print0은 표준은 아니지만 -exec는 이식성이 문제인 경우 -exec와 함께 find를 사용하십시오.
이것을 사용하십시오 : (ls는 공백이 있거나 이상한 문자가있는 파일 이름으로 정렬 할 수 있습니다)
find . -name *foo* -print0 | xargs -0 ls -lah
"-print0"은 파일 이름과 같은 파일 이름 file foo 1
에서 find
널 이 출력 됨을 의미합니다 . xargs에 대한 "-0"인수는 이러한 종류의 입력을 예상하므로 공백이있는 파일 이름이 ls
명령에 올바르게 파이프 됩니다.
xargs
건설은보다 나은 몇 가지 방법에 find etc -exec ls {} \;
파일 이름의 모두로 전송받을 때문에 ls
당신이 (사용 타임 스탬프에 의해 그들 모두를 정렬 할 그렇다면, 한 번에 ls
이 작품 등) 뭔가 :
find . -iname *pdf -print0 | xargs -0 ls -ltr
NetBSD 시스템에서, "-printx"도 옵션입니다 (이것은 나에게 유용한 주장 인 것 같습니다. 그러나 우리는 xargs -0을 가지고 있고 괜찮습니다) :
find . -name *foo* -printx | xargs ls -lah
(우분투 아님)