좀 이상한 문제가 생겼습니다.
내가 실행하면 :
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 {} +