특정 이름을 가진 모든 디렉토리의 직접 하위 디렉토리만 나열

특정 이름을 가진 모든 디렉토리의 직접 하위 디렉토리만 나열

다음과 같은 디렉토리 구조가 있습니다.

.
├── Untitled Folder
│   ├── Untitled Folder
│   │   └── zing
│   │       ├── first
|   |       |   └── dum
│   │       ├── second
│   │       └── third
│   ├── Untitled Folder 2
│   └── Untitled Folder 3
├── Untitled Folder 2
│   ├── Untitled Folder
│   ├── Untitled Folder 2
│   │   └── zing
│   │       ├── fifth
|   |       |   └── dum
│   │       ├── fourth
│   │       └── sixth
│   └── Untitled Folder 3
└── Untitled Folder 3
    ├── Untitled Folder
    ├── Untitled Folder 2
    └── Untitled Folder 3
        └── zing
            ├── eighth
            └── seventh
                └── dum

zing나는 단지 모든 디렉토리의 직접적인 하위 디렉토리를 나열하고 싶습니다 .

예시 출력은 다음과 같습니다:

first
second
third
fifth
fourth
sixth
eighth
seventh

나는 노력했다

% find . -type d | grep zing
./Untitled Folder 3/Untitled Folder 3/zing
./Untitled Folder 3/Untitled Folder 3/zing/eigthth
./Untitled Folder 3/Untitled Folder 3/zing/seventh
./Untitled Folder 3/Untitled Folder 3/zing/seventh/dum
./Untitled Folder 2/Untitled Folder 2/zing
./Untitled Folder 2/Untitled Folder 2/zing/fifth
./Untitled Folder 2/Untitled Folder 2/zing/fifth/dum
./Untitled Folder 2/Untitled Folder 2/zing/fourth
./Untitled Folder 2/Untitled Folder 2/zing/sixth
./Untitled Folder/Untitled Folder/zing
./Untitled Folder/Untitled Folder/zing/first
./Untitled Folder/Untitled Folder/zing/first/dum
./Untitled Folder/Untitled Folder/zing/third
./Untitled Folder/Untitled Folder/zing/second

zingdum(이 경우에는) 내가 원하지 않는 자녀의 자녀도 표시됩니다 .

예상되는 결과를 어떻게 얻을 수 있나요?

답변1

  • Bash, Globstar 활성화(사용됨 shopt -s globstar).

    printf '%s\n' **/zing/*/
    
    • 마지막 경로 구성 요소에 대해서만

       for dir in **/zing/*/; do basename "$dir"; done
      
  • POSIX 조회.

    find . -type d -path '*/zing/*' -prune
    

    -prune일치하는 디렉터리에서 내림차순을 피하세요.

    • 마지막 경로 구성 요소에 대해서만

      find . -type d -path '*/zing/*' -prune -exec basename {} \;
      

답변2

이 시도:

find . -type d -regex ".*/zing/[^/]+"

답변3

당신은 모두 찾을 수 있습니다천진목차

find . -type d -name zing

디렉토리의 내용을 얻으려면 각 디렉토리에서 "ls"를 실행하십시오.

또는 find( find \{\} -type d -maxdepth 1 -mindepth 1)를 반복하여 직접 하위 디렉터리 이름만 가져올 수도 있습니다. 그런 다음 basename을 사용하거나 | rev | cut -f1 -d/ | rev.

관련 정보