cd /tmp
find . -maxdepth 1 -mindepth 1 -type d -printf '%f\n'
Una breve spiegazione:
-
findtrova i file (ovviamente) -
.è la directory corrente, che dopo ilcdè/tmp(IMHO questo è più flessibile che avere/tmpdirettamente nelfindcomando. Hai un solo posto, ilcd, da cambiare, se vuoi che più azioni abbiano luogo in questa cartella) -
-maxdepth 1e-mindepth 1assicurati chefindcerca solo nella directory corrente e non include.stesso nel risultato -
-type dcerca solo le directory -
-printf '%f\nstampa 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