cd /tmp
find . -maxdepth 1 -mindepth 1 -type d -printf '%f\n'
Eine kurze Erklärung:
-
find
findet (ganz offensichtlich) Dateien -
.
ist das aktuelle Verzeichnis, das nach demcd
ist/tmp
(IMHO ist dies flexibler als/tmp
zu haben direkt imfind
Befehl. Sie haben nur einen Ort, dencd
, um zu ändern, ob in diesem Ordner weitere Aktionen ausgeführt werden sollen) -
-maxdepth 1
und-mindepth 1
Stellen Sie sicher, dassfind
sucht nur im aktuellen Verzeichnis und enthält nicht.
selbst im Ergebnis -
-type d
sucht nur nach Verzeichnissen -
-printf '%f\n
gibt nur den Namen des gefundenen Ordners (plus Zeilenumbruch) für jeden Treffer aus.
Et voilà!
Alle bisherigen Antworten verwenden find
, also hier ist eine mit nur der Schale. In Ihrem Fall sind keine externen Tools erforderlich:
for dir in /tmp/*/ # list directories in the form "/tmp/dirname/"
do
dir=${dir%*/} # remove the trailing "/"
echo "${dir##*/}" # print everything after the final "/"
done