전체 하위 디렉터리에서 와일드카드 제거, Mac OS

전체 하위 디렉터리에서 와일드카드 제거, Mac OS

명령이 실행되는 디렉터리 아래의 모든 하위 디렉터리에서 와일드카드를 제거하고 싶습니다.

답변1

find . -name '*.unwanted' ! -type d -delete

이름이 일치하는 파일 *.unwanted(유형목차1) 현재 디렉터리와 아래 하위 디렉터리. 삭제되면 ! -type d디렉터리 파일도 삭제되지만 비어 있지 않은 경우에만 해당됩니다.

숨겨진 파일과 숨겨진 디렉터리의 파일도 삭제됩니다.

-deleteBSD 확장이며(macOS에서도 작동함) GNU를 포함한 find일부 다른 구현에서도 발견되지만 find표준은 아닙니다( 지원하지 않는 -exec rm -f {} +경우 find다음으로 대체).

이제 macOS의 기본 대화형 셸은 이므로 zsh셸 프롬프트에서도 동일한 작업을 수행할 수 있습니다.

rm -f -- **/*.unwanted(D^/)   # same as find above, D for dot (hidden) files
rm -f -- **/*.unwanted(^/)    # skip hidden files and dirs
rm -f -- **/*.unwanted(-^/)   # consider the type of file after symlink resolution
rm -f -- ***/*.unwanted(^/)   # follow symlinks when traversing the
                              # directory tree (same as find -L)

그러나 다음과 같은 문제가 발생할 수 있습니다.매개변수 목록이 너무 깁니다.파일 수가 많은 경우 오류가 발생하며 내장 명령을 사용하거나 zargs사용하여 rm해결할 수 있습니다 zmodload zsh/files.

find조건자와 zsh glob 한정자( 섹션) 모두 (...)삭제하려는 파일을 더욱 구체화할 수 있습니다. 몇 가지 예:

  • -type f/ (.): 일반 파일만( ! -type d/ 대체 (^/))
  • -mtime -7/ (m-7): 7일 이내
  • -size +1000000c/ (L+1000000): 1MB 이상입니다.
  • -exec cmd {} \;/ (e['cmd $REPLY']), 실제 파일을 반환합니다 cmd.
  • 자세한 내용은 / manthe/documentation()을 참조하세요.infofindzshinfo zsh qualifiers

1 단, 디렉토리형 파일을 가리키는지 여부에 상관없이 심볼릭 링크를 제거한다.

관련 정보