web-dev-qa-db-fra.com

Répertorier uniquement les répertoires sous UNIX

Je veux lister uniquement les répertoires dans le chemin spécifié (ls n'a pas cette option). En outre, cela peut-il être fait avec une commande d'une seule ligne?

210
S'am

Essayez ceci ls -d */ pour lister les répertoires du répertoire courant

305
David Hancock

Essaye ça:

find . -maxdepth 1 -type d
92
Robin

Le suivant

find * -maxdepth 0 -type d

filtre essentiellement le développement de '*', c'est-à-dire toutes les entrées du répertoire en cours, par la condition -type d.

L’avantage est que la sortie est identique à ls -1 *, mais seuls les répertoires et les entrées ne commencent pas par un point.

20
radiospiel

Vous pouvez utiliser ls -d */ ou tree -d

Une autre solution serait la suppression, mais cela dépend du shell que vous utilisez et de la prise en charge de la suppression de répertoires.

Par exemple ZSH:

zsh # ls *(/)
13
echox

Comme il existe des dizaines de façons de le faire, en voici un autre:

tree -d -L 1 -i --noreport
  • -d: répertoires
  • -L: profondeur de l'arbre (d'où 1, notre répertoire de travail)
  • -i: pas d'indentation, noms imprimés uniquement
  • --noreport: ne rapporte pas d'informations à la fin de la liste d'arborescence
10
alleen1
ls -l | grep '^d'

Vous pouvez créer un alias et le mettre dans le fichier de profil.

alias ld="ls -l| grep '^d'"
9
somesh chandra
find . -maxdepth 1 -type d -name [^\.]\* | sed 's:^\./::'
7
mda

Pour lister les répertoires du répertoire de travail actuel, ls -d */ peut être utilisé. Et si vous avez besoin de lister les répertoires cachés, utilisez cette commande ls -d .*/

6
kvivek

utilisez ceci pour obtenir une liste de répertoire

ls -d */ | sed -e "s/\///g"
6
Lakshmi

La réponse dépend de votre Shell .

Dans zsh, par exemple, vous pouvez effectuer les opérations suivantes:

_echo *(/)
_

Et tous les répertoires du répertoire de travail actuel seront affichés.

Voir man zshexpn pour plus d'informations.

Une autre approche consisterait à utiliser find(1), qui devrait fonctionner avec la plupart des versions Unix:

_find . -maxdepth 1 -type d -print  
_

find(1) a de nombreuses utilisations, je recommanderais donc certainement _man find_.

5
Johnsyweb

Vous pouvez utiliser la commande tree avec son commutateur d pour accomplir cela.

% tree -d tstdir
tstdir
|-- d1
|   `-- d11
|       `-- d111
`-- d2
    `-- d21
        `-- d211

6 directories

voir man tree pour plus d'informations.

4
slm

find specifiedpath -type d

Si vous ne voulez pas recurse dans des sous-répertoires, vous pouvez le faire à la place:

find specifiedpath -type d -mindepth 1 -maxdepth 1

Notez que les répertoires "points" (dont le nom commence par .) seront également listés; mais pas les répertoires spéciaux . ni ... Si vous ne voulez pas de répertoires "points", vous pouvez simplement grep les sortir:

find specifiedpath -type d -mindepth 1 -maxdepth 1 | grep -v '^\.'

4
DomQ
### If you need full path of dir and list selective dir with "name" of dir(or dir_prefix*):
find $(pwd) -maxdepth 1 -type d -name "SL*"
2
Surya

Si j'ai ce répertoire:

ls -l

lrwxrwxrwx  1 nagios nagios     11 août   2 18:46 conf_nagios -> /etc/icinga
-rw-------  1 nagios nagios 724930 août  15 21:00 dead.letter
-rw-r--r--  1 nagios nagios  12312 août  23 00:13 icinga.log
-rw-r--r--  1 nagios nagios   8323 août  23 00:12 icinga.log.gz
drwxr-xr-x  2 nagios nagios   4096 août  23 16:36 tmp

Pour obtenir tous les répertoires, utilisez -L pour résoudre les liens:

ls -lL | grep '^d'

drwxr-xr-x 5 nagios nagios   4096 août  15 21:22 conf_nagios
drwxr-xr-x 2 nagios nagios   4096 août  23 16:41 tmp

sans -L:

ls -l | grep '^d'

drwxr-xr-x 2 nagios nagios   4096 août  23 16:41 tmp

conf_nagios le répertoire est manquant.

2
c-toesca

Voici une autre solution qui affiche les répertoires liés. Je le préfère légèrement parce que c'est un sous-ensemble de la sortie "normale" de ls -l:

ls -1d */ | rev | cut -c2- | rev | xargs ls -ld --color=always
1
Amnon Harel

Cela a fonctionné pour moi:

`ls -F | grep /`

(Mais je passe à echo */ comme mentionné par @nos)

1
FractalSpace