
디렉토리에 파일 목록이 있고 0이나 7이 포함된 모든 파일을 제거해야 합니다. grep을 사용해야 할 것 같지만 잘 모르겠습니다. 어떤 아이디어가 있나요?
답변1
당신이 원하는 것은 특정 조건 테스트에 따라 파일을 평가하고 조건 테스트 결과에 따라 각 파일에 대한 작업을 수행하는 것입니다. 이것이 명령의 정확한 목적입니다 find
.
여기 휴대용(POSIX 호환) "0" 또는 "7"을 포함하는 내용이 있는 일반 파일을 제거하는 명령:
find . -type f -exec grep -q '[07]' {} \; -exec rm {} +
참고하세요이것재귀적으로현재 디렉토리를 검색합니다.
원하는 것이 아닌 경우 -maxdepth
기본이 사용 가능한지 확인할 수 있습니다. 이 경우 기본도 사용할 수 있으며 -delete
POSIX에서는 둘 다 지정하지 않습니다.
find . -maxdepth 1 -type f -exec grep -q '[07]' {} \; -delete
또는 다음에 제공된 기술을 적용할 수 있습니다.
답변2
grep -l '[07]' DirToYourFiles/* | xargs rm -f
grep -l
파일 이름만 나열함을 의미합니다.
[07]
0 또는 7을 의미합니다.
xargs
그들에게 명령을 내리게 합니다.
이는 파일 이름에 공백, 개행, 작은따옴표, 큰따옴표 또는 백슬래시 문자가 포함되어 있지 않다고 가정합니다. GNU 유틸리티를 사용하면 다음을 통해 더욱 안정적으로 만들 수 있습니다.
grep -lZ '[07]' DirToYourFiles/* | xargs -r0 rm -f