特定の名前を持つすべてのディレクトリの直接サブディレクトリのみを一覧表示する

特定の名前を持つすべてのディレクトリの直接サブディレクトリのみを一覧表示する

次のディレクトリ構造があります。

.
├── 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 {} \;
      

おすすめ記事