Ich kann die Unterverzeichnisse eines Verzeichnisses von finden
ls -d -- */
oder
ls -l | grep "^d"
aber beide scheinen indirekt zu sein, und ich würde mir vorstellen, dass es einen Standardweg gibt, um nur die Verzeichnisse zu finden. Gibt es einen richtigen Weg, dies zu tun? Und wenn nicht, führt beides zu unerwünschtem Verhalten in Randfällen? (Symbolische Links, versteckte Verzeichnisse usw.)
quelle
find . -maxdepth 1 -type d
, damit dies unter OS X Yosemite funktioniert.find . -maxdepth 1 -mindepth 1 -type d
. Andernfalls wird das aktuelle Verzeichnis.
eingeschlossen.Zu Ihrer Information - In ZSH (aber nicht BASH) können Sie dies auch tun :
ls -d -- *(/)
; Der(/)
Modifikator weist ZSH nur an globale Verzeichnisse an.Das heißt, es unterscheidet sich nicht sehr von Ihrer eigenen vorgeschlagenen Lösung (
ls -d -- */
), und es ist weit vom Standard entfernt.Soweit die Ausgabe von
ls
(die sich wahrscheinlich aufgrund anderer Flags unterscheidet):quelle
*(/)
Erweiterung zu den nicht ausgeblendeten Verzeichnissen erfolgt, während die*/
Erweiterung zu nicht ausgeblendeten Verzeichnissen oder Symlinks zu Verzeichnissen (oder zumindest zu Symlinks zu Pfaden, für die wir feststellen können, dass es sich um Verzeichnisse handelt) erweitert wird.