파일이 없는 디렉토리 찾기

파일이 없는 디렉토리 찾기

find이 명령을 사용하여 특정 파일이 포함되지 않은 디렉터리를 찾으려면 어떻게 해야 합니까 ? 예를 들어 개정 관리를 받아야 하는 디렉터리가 여러 개 있는 경우 하위 디렉터리가 없는 디렉터리를 검색하고 찾을 수 있습니까 .git? 또는 내 프로젝트에서 모든 모듈에 utilities.py파일이 있어야 한다고 지정합니다. 필요한 파일이 아직 없는 하위 디렉터리를 어떻게 검색할 수 있습니까?

답변1

이것해결책당신에게 도움이 될 수 있는 것은,

find . -type d '!' -exec test -e "{}/utilities.py" ';' -print

시험

  1. 나는 이름이 붙은 4개의 하위 디렉터리를 만들었습니다.디렉토리 1,디렉토리 2,목차 3그리고 공백이 있는 디렉터리. 이것이 공백을 똑같이 잘 처리하는지 테스트하고 싶었기 때문에 이름에 공백이 있는 디렉터리를 만들었습니다.
  2. 파일을 만들었습니다.파일 1,파일 2,파일 3그리고파일 4존재하다디렉토리 2 그리고목차 3.
  3. 존재하다디렉토리 1, 내가 만든다파일 1,파일 2,파일 3.
  4. 존재하다공백이 있는 디렉터리, 저는 다음과 같은 파일을 만들었습니다.공백이 있는 파일.
  5. 이제 find 명령을 실행합니다.

    find . -type d '!' -exec test -e "{}/file with spaces" ';' -print
    
  6. 내가 얻는 결과는 다음과 같습니다.

    .
    ./dir1
    ./dir2
    ./dir3
    
  7. 예상대로 디렉토리 이후공백이 있는 디렉터리라는 파일이 포함되어 있습니다.공백이 있는 파일출력에는 나열되지 않습니다. find명령을 다음으로 변경하면파일 4그 결과 내가 얻는 결과는 다음과 같습니다.

    .
    ./dir with spaces
    ./dir1
    

편집하다

그러나 최종 수준에 하위 디렉터리와 파일이 중첩되어 있으면 위 방법이 작동하지 않는 것 같습니다. 따라서 이 상황을 극복하기 위해 결과를 토론과 같은 것으로 수정할 수 있습니다.여기.

find . -type f -not -name 'utilities.py' -exec dirname {} \; | sort -u

Giles가 그의 책에서 제안한 것처럼논평,

.git상위 디렉토리를 포함하는 디렉토리를 건너뛰는 것이 더 유용할 것입니다 .git. 올바른 위치에 -prune을 추가하면 됩니다.

find . -type d -exec test -e "{}/.git" ';' -prune -o -print

관련 정보