web-dev-qa-db-fra.com

Y a-t-il une option avec la commande 'ls' pour que je ne voie que les répertoires?

Parfois, je dois vérifier uniquement les répertoires et non les fichiers. Y a-t-il une option avec la commande ls? Ou existe-t-il une utilité pour le faire?

MODIFIER : j'utilise Mac OS X et ls -d Donne moi . même si j'ai des répertoires.

86
prosseek

Je sais qu'il existe déjà une réponse sélectionnée, mais vous pouvez obtenir le comportement demandé avec simplement ls:

ls -ld -- */

(Notez que le "-" marque la fin des paramètres, empêchant les noms de dossier commençant par un trait d'union d'être interprétés comme des options de commande supplémentaires.)

Cela répertorie tous les répertoires non masqués (sauf si vous configurez les globes de votre Shell pour les développer) dans le répertoire de travail actuel où il est exécuté (notez qu'il comprend également des liens symboliques vers des répertoires). Pour obtenir tous les sous-répertoires d'un autre dossier, essayez simplement:

ls -ld /path/to/directory/*/

Notez que -l est facultatif.

96
Steven D

Non, mais une simple commande find le fera:

find . -type d -depth 1

ou grep

ls -F | grep /

Vous pouvez alors alias l'un ou l'autre si nécessaire.

16
gvkv

J'ai également eu besoin d'afficher les répertoires cachés, j'ai donc modifié la suggestion ci-dessus pour répondre à mes besoins

ls -d -- */ .*/

(selon le Shell, cela peut également inclure . et ..)

7
Neil Chandler

J'aime l'utilitaire tree pour avoir un aperçu de la structure du répertoire. Il est disponible dans MacPorts et dans toutes les distributions Linux que j'ai essayées.

tree -d -L 2

Cela afficherait tous les répertoires, sur deux niveaux.

7
Claes Mogren

Avec zsh (comme on le trouve par défaut sur macOS, c'était même /bin/sh there), vous utiliseriez des qualificatifs glob pour sélectionner des fichiers en fonction de leur type:

  • Liste des répertoires non masqués:

    ls -d -- *(/)
    
  • Liste tous les répertoires:

    ls -d -- *(D/)
    

    (. et .. sont toujours exclus, ajoutez-les individuellement si vous le souhaitez)

  • Incluez également des liens symboliques vers des répertoires:

    ls -d -- *(D-/)
    

    (- fait en sorte que d'autres qualificatifs s'appliquent après la résolution du lien symbolique).

3
Stéphane Chazelas

Il n'y a pas seulement une option pour lister les répertoires ...

Mais vous pouvez utiliser -d (répertorie les répertoires eux-mêmes, pas leur contenu) et */ pour faire correspondre les répertoires eux-mêmes:

ls -d */

Et essayez d'utiliser le point, pour les masqués, ls -d .*/.

Juste pour le plaisir, essayez: ls -d et ls */. Les différences seront claires!

Réf:

0
marcio