string 을 포함하는 모든 텍스트를 삭제하고 싶습니다 foo
.
모든 파일을 나열할 수 있지만 옵션 ack-grep foo
처럼 모든 파일을 삭제하는 방법을 찾을 수 없습니다 .-exec rm {}
find
특정 문자열이 포함된 모든 파일을 삭제하는 방법은 무엇입니까?
답변1
GNU 사용 xargs
:
ack -l --print0 foo | xargs -r0 rm --
ack --print0
와 xargs'는 -0
ack와 xargs가 쓰기 및 읽기를 위한 구분 기호로 NUL을 사용하도록 하여 올바른 파일 이름 처리를 보장합니다. 이것이 없으면 xargs
더 넓은 범위의 문자가 구분 기호로 허용됩니다.
답변2
파일 이름만 나열하는 grep 및 ack와 함께 -l 옵션을 사용할 수 있습니다.
grep -l --null foo ./* | xargs -r0 rm
또는:
ack -l --print0 foo ./* | xargs -r0 rm --