디렉터리에 파일 목록이 있고 0 또는 7이 포함된 모든 파일을 삭제해야 합니다. grep을 사용해야 할 것 같은데 잘 모르겠습니다. 어떤 아이디어가 있나요?
답변1
당신이 하는 일은 특정 조건 테스트에 대해 파일을 평가하고 조건 테스트 결과에 따라 각 파일에 대한 작업을 수행하는 것입니다. 이것이 이 명령의 정확한 목적입니다 find
.
이것은 휴대용(POSIX 호환) 명령은 내용에 "0" 또는 "7"이 포함된 일반 파일을 삭제합니다.
find . -type f -exec grep -q '[07]' {} \; -exec rm {} +
알아채다이것재귀적으로현재 디렉토리를 검색합니다.
이것이 원하는 것이 아니라면 master 데이터베이스를 -maxdepth
사용할 수 있는지 확인할 수 있습니다(이 경우 master 데이터베이스를 사용할 수도 있습니다 -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