cd /tmp
find . -maxdepth 1 -mindepth 1 -type d -printf '%f\n'
Una breve spiegazione:
-
find
trova i file (ovviamente) -
.
è la directory corrente, che dopo ilcd
è/tmp
(IMHO questo è più flessibile che avere/tmp
direttamente nelfind
comando. Hai un solo posto, ilcd
, da cambiare, se vuoi che più azioni abbiano luogo in questa cartella) -
-maxdepth 1
e-mindepth 1
assicurati chefind
cerca solo nella directory corrente e non include.
stesso nel risultato -
-type d
cerca solo le directory -
-printf '%f\n
stampa solo il nome della cartella trovata (più una nuova riga) per ogni hit.
Et voilà!
Tutte le risposte finora usano find
, quindi eccone uno con solo il guscio. Non c'è bisogno di strumenti esterni nel tuo caso:
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