찾기: 특정 하위 디렉터리만 허용

찾기: 특정 하위 디렉터리만 허용

다음과 같은 폴더 구조가 있습니다

| subdirectoy1
| |
| |_ file1.jpg
| |_ file2.jpg
| |_ ...
|
| subdirectory2
| |
| |_ file11.jpg
| |_ file12.jpg
| |_ ...
|
| ...
|
|_ file21.jpg
|_ file22.jpg
|_ ...

보시다시피, 폴더의 루트 수준에는 몇 개의 파일과 다양한 하위 디렉터리(내 트리에서는 2개 이상)가 있으며 각 디렉터리에는 더 많은 이미지가 포함되어 있습니다.

지금 내가 생각하는 것은 내가 원하는 것이다찾다루트 수준 이미지와 이미지는 하위 디렉터리1에 있지만아니요다른 디렉토리에 있는 것들.

글쎄, 간단한 방법을 사용하여 다른 디렉터리를 하나씩 제외할 수 있습니다.

find . -type f -not -path "*subdirectory2*" -exec ...

하지만 이 줄이 다른 폴더의 이름이 지정되지 않은 경우에 더 적합했으면 좋겠습니다.하위 디렉터리 2등.

또는 다른 말로 하면 다음과 같이 말할 수 있는 방법이 있습니까?

find . -maxdepth 1 ...

하지만 해당 경계 아래에 있는 하나의 특정 하위 디렉터리를 제외하면 어떻게 될까요?

답변1

다음에 해당하지 않는 디렉터리를 정리할 수 있습니다 subdirectory1.

find . ! \( -name . -o -name subdirectory1 \) -prune -type f

나중에 파일에 수행하려는 작업을 추가할 수 있습니다 -type f.

작동 방식은 다음과 같습니다.

  • 현재 디렉터리에서 시작
    • 일치하지 않는 콘텐츠를 잘라내 .거나 subdirectory1(다른 디렉터리는 무시함)
    • 일반 파일만 보관

그러면 현재 디렉터리와 그 안의 모든 파일이 검색됩니다 subdirectory1( subdirectory1하위 디렉터리로 이동하지 않음).

관련 정보