grep과 일치하는 참조 파일

grep과 일치하는 참조 파일

grep의 매뉴얼 페이지에는 다음과 같이 나와 있습니다.

"grep -lZ outputs a zero byte after each file name instead of the usual newline"

하지만 내 경우에는 출력의 일부 파일에 여전히 따옴표가 필요합니다. 작동하게 하려면:

/usr/bin/grep -rlZ 'Not Found'|xargs -0 rm

-w파일 이름에 있는 는 -webkit-stuff.htmlrm에 대한 옵션으로 해석되어서는 안 됩니다. 그래서 저는 현재 이 일을 하고 있습니다:

/usr/bin/grep -rlZ 'Not Found'|\
xargs -0 -I{} find . -type f -name {} -print0 | xargs -0 rm

이는 별로 효율적이지 않습니다. -print0grep의 "더 나은" 버전이 있습니까 ?

당신은 무엇을 할 것인가?

답변1

당신이 사용할 수있는

/usr/bin/grep -rlZ 'Not Found' | xargs -0 -r rm --

--유틸리티가 어떤 것도 옵션으로 해석하지 못하게 하는 경우

/usr/bin/grep -rlZ 'Not Found' . | xargs -0 -r rm

이렇게 하면 grep모든 파일의 경로 이름에 접두사가 붙게 됩니다 ./.-rxargsxargs 아니요입력이 수신되지 않으면 grep(즉, 문자열이 포함된 파일이 없는 경우) 명령이 실행됩니다.

개인적으로 다음을 사용할 수 있습니다 find.

find . -type f -exec grep -qF 'Not found' {} ';' -delete

(동일한 일을 한다고 생각합니다. 문자열이 포함된 파일을 재귀적으로 삭제합니다 Not found.)

관련 정보