누락된 OSX 리소스 찾기

누락된 OSX 리소스 찾기

OSX(big sur -so Zhell)에는 .bundle 파일이 포함된 폴더가 있고 각 번들에는 여러 파일과 폴더가 포함되어 있습니다. 대부분의 파일에는 PNG_.zip이라는 리소스가 있지만 일부 파일에는 없습니다.

그래서 이것을 실행하면:

find ~/Desktop/test  -name "PNG_.zip"  

PNG_.zip이 포함된 모든 항목이 출력됩니다.

하지만 모든 항목을 찾고 싶습니다.PNG_.zip을 포함하지 않음어떻게 해야 하나요?

감사해요!

답변1

zsh 사용글로벌 예선, 번들이 디렉토리라고 가정합니다.

먼저, 현재 디렉터리 아래에서 패키지 디렉터리를 찾는 방법은 다음과 같습니다.

print -rC1 -- **/*.bundle(/N)
  • **/…중첩된 하위 디렉터리의 파일과 일치합니다.
  • (/)디렉터리에 대한 일치를 제한합니다.
  • (N)일치하는 항목이 없으면 결과는 오류 대신 빈 목록입니다.

그런 다음 결과를 필터링하여 번들만 유지하고 다른 항목은 유지하지 않습니다 PNG_.zip.

print -rC1 -- **/*.bundle(/Ne['()(($#==0)) $REPLY/**/PNG_.zip(NDY1)'])
  • (e['…'])일치 항목 필터링: 식이 참인 일치 항목만 유지합니다. 이 코드는 각 게임마다 순차적으로 실행되며 $REPLY게임에 설정됩니다.
  • ()(($#==0)) …길이가 0인 단어 목록으로 확장되는지, 즉 (단어 목록으로서) 비어 있는지 여부를 테스트합니다 .
  • (Y1)일치하는 항목이 하나 발견되면 디렉터리 탐색을 중지하는 최적화입니다. ()는 또한 (D)패키지 디렉토리의 숨겨진 하위 디렉토리에 있는 dotglob파일을 찾습니다 .PNG_.zip

답변2

나는 믿는다:

   $ find . -type f \(  ! -iname "*PNG_.zip*" \)

실제로 트릭이 있습니다. ! 연산자는 검색 패턴을 부정합니다. 따라서 일치하지 않는 모든 파일을 얻게 됩니다.

관련 정보