cd /tmp
find . -maxdepth 1 -mindepth 1 -type d -printf '%f\n'
Petite explication :
-
findtrouve les fichiers (évidemment) -
.est le répertoire courant, qui après lecdest/tmp(IMHO c'est plus flexible que d'avoir/tmpdirectement dans lefindcommande. Vous n'avez qu'un seul endroit, lecd, à changer, si vous voulez que plus d'actions aient lieu dans ce dossier) -
-maxdepth 1et-mindepth 1assurez-vous quefindne regarde que dans le répertoire courant et n'inclut pas.lui-même dans le résultat -
-type drecherche uniquement les répertoires -
-printf '%f\nimprime uniquement le nom du dossier trouvé (plus une nouvelle ligne) pour chaque hit.
Et voilà !
Toutes les réponses jusqu'à présent utilisent find , alors en voici un avec juste la coque. Pas besoin d'outils externes dans votre cas :
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