次のディレクトリ構造があります。
.
├── 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
zing
dum
(この場合)私が望んでいない子供の子供も表示されます。
予想される結果をどのように取得できますか?
ベストアンサー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 {} \;