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.html
rm에 대한 옵션으로 해석되어서는 안 됩니다. 그래서 저는 현재 이 일을 하고 있습니다:
/usr/bin/grep -rlZ 'Not Found'|\
xargs -0 -I{} find . -type f -name {} -print0 | xargs -0 rm
이는 별로 효율적이지 않습니다. -print0
grep의 "더 나은" 버전이 있습니까 ?
당신은 무엇을 할 것인가?
답변1
당신이 사용할 수있는
/usr/bin/grep -rlZ 'Not Found' | xargs -0 -r rm --
--
유틸리티가 어떤 것도 옵션으로 해석하지 못하게 하는 경우
/usr/bin/grep -rlZ 'Not Found' . | xargs -0 -r rm
이렇게 하면 grep
모든 파일의 경로 이름에 접두사가 붙게 됩니다 ./
.-r
xargs
xargs
아니요입력이 수신되지 않으면 grep
(즉, 문자열이 포함된 파일이 없는 경우) 명령이 실행됩니다.
개인적으로 다음을 사용할 수 있습니다 find
.
find . -type f -exec grep -qF 'Not found' {} ';' -delete
(동일한 일을 한다고 생각합니다. 문자열이 포함된 파일을 재귀적으로 삭제합니다 Not found
.)