-print0 찾기 | Ubuntu 10.04에서 xargs -0 grep이 예상대로 작동하지 않습니다.

-print0 찾기 | Ubuntu 10.04에서 xargs -0 grep이 예상대로 작동하지 않습니다.

좀 이상한 문제가 생겼습니다.

내가 실행하면 :

find . -iname '*.php' -o -iname '*.pl' -o -iname '*.html' | xargs grep -i users

공백이 포함된 파일 이름에 대해 오류가 많이 발생하지만 일부 파일도 일치합니다.

그러나 공백이 포함된 파일 이름이 올바르게 처리되도록 다음을 시도하면 일치하는 항목이 반환되지 않습니다.

find . -iname '*.php' -o -iname '*.pl' -o -iname '*.html' -print0 | xargs -0 grep -i users

내가 도대체 ​​뭘 잘못하고있는 겁니까? 두 번째 명령은 적어도 첫 번째 명령과 일치하는 파일을 반환해야 하지만 일치하는 항목은 없습니다.

답변1

대답은 다음과 같습니다.

find . \( -iname '*.php' -o -iname '*.pl' -o -iname '*.html' \) -print0 | xargs -r0 grep -i users

이것은 작동합니다. 저는 한 번도 본 적이 없는데 동료가 알려줬어요.

답변2

print0 및 xargs가 필요하지 않습니다. 이 기능은 이미 find에 내장되어 있습니다.

find . -iname "*.php" -o -iname "*.pl" -o -iname "*.html" -exec grep -i users {} + 

관련 정보