정규식과 일치하지 않는 파일을 반복적으로 삭제합니다.

정규식과 일치하지 않는 파일을 반복적으로 삭제합니다.

폴더 트리에서 임시 파일 묶음을 지우려고 하는데 특정 기준과 일치하는 파일, 특히 실행 파일, .tpl 파일은 삭제하고 하위 폴더 "data"는 삭제하고 싶지 않습니다.

여기서 이 질문을 봤어요

Mac 터미널을 사용하여 정규식과 일치하는 디렉터리의 파일을 삭제하세요.

내가 찾고 있는 것과 거의 일치하지만 일치시키려는 정규식이 있고 일치하고 싶지 않은 정규식이 있습니다. 삭제되지 않은 모든 파일을 찾으려면 다음을 수행하십시오.

find . -executable -o -regex '.*\.tpl'

정규 표현식에서 -v처럼 일치를 역전시키는 방법이 있나요?

답변1

정규 표현식에서 -v처럼 일치를 역전시키는 방법이 있나요?

사용부정적인( !):

find . -executable -o ! -regex '.*\.tpl' -exec rm -i {} \+

답변2

특정 기준과 일치하는 파일을 제외한 모든 항목에 대해 명령을 실행하는 편리한 방법은 "아무것도 하지 않으면 수행"을 의미하는 단락 동작 -o을 활용하는 것입니다 .find -cond1 -cond2 -o -exec commandcond1cond2command

find . -type f -executable -o -name '*.tpl' -o -exec rm -i {} \+

디렉터리를 제외하려면 "디렉터리를 건너뛰고 해당 디렉터리로 다시 들어가지 않음"을 의미하는 작업을 data사용하세요 . 이름이 지정된 모든 디렉터리를 일치시키 거나 최상위 수준에서만 일치 -prune하는 데 사용됩니다 .-name datadata-path ./data

find . -type f -executable -o \
       -name '*.tpl' -o \
       -type d -name data -prune -o \
       -exec rm -i {} \+

보너스: zsh에서도 동일합니다.

rm -i -- **/*~*.tpl~data/*(.^*)
  • 이것~운영자특정 패턴과 일치하는 파일을 제외합니다(먼저 이 작업을 수행해야 함 setopt extended_glob).
  • **/구현하다재귀 와일드카드
  • 이것. 글로벌 예선전체 일치 항목을 일반 파일로 제한하고 ^*실행 파일을 제외합니다( ^다음 한정자를 부정합니다. 한정자는 AND입니다).

관련 정보