cd /tmp
find . -maxdepth 1 -mindepth 1 -type d -printf '%f\n'
Eine kurze Erklärung:
-
findfindet (ganz offensichtlich) Dateien -
.ist das aktuelle Verzeichnis, das nach demcdist/tmp(IMHO ist dies flexibler als/tmpzu haben direkt imfindBefehl. Sie haben nur einen Ort, dencd, um zu ändern, ob in diesem Ordner weitere Aktionen ausgeführt werden sollen) -
-maxdepth 1und-mindepth 1Stellen Sie sicher, dassfindsucht nur im aktuellen Verzeichnis und enthält nicht.selbst im Ergebnis -
-type dsucht nur nach Verzeichnissen -
-printf '%f\ngibt 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