Affichage des repertoires seulement

Résolu
Bonjour,

Je veux afficher seulement les repertoires contenus dans un repertoire donne. J'ai lu le man de ls et ce que j'ai trouve c'est l'option -d mais ca ne fonctionne pas. Comment fait-on pour afficher uniquement les repertoires (de facon recursive)?

Merci
Configuration: Linux
Konqueror 3.5

9 réponses

  1. Salut !
    Tu peux egalement utiliser "ls -d */"
    ls -d : pour lui dire qu'il ne descend pas dans les sous répertoires
    */: pour lui dire qu'il affiche tous ceux qui se terminent par "/" qui sont uniquement les repertoires
    +
    12
    1. C'est noté. Merci.
      0
    2. Merci. Utile et complet
      0
  2. Contributeur
    peros je préfère tree pour ça.

    tree -d repertoire/

    4
    1. Modérateur
      Salut,
      ls -lR | grep ^d 
      ou
      find . -type d -exec ls -ld {} \;   
      --
      106485010510997108
      3
      1. Modérateur
        Salut,

        Ou
        ls -R | grep  '/$'
        ;-))
        0
    2. J'ai essaye vos trois commandes et c'est seulement la commande du "perlien" a lami20j qui a fonctionne, soit ls -lR | grep ^d.

      Dans le cas de la commande proposee par jipicy ( ls -R | grep '/$' ), elle n'affiche rien tandis que la commande de marc[i1] ne fonctionne pas puisqu'il n'y a pas de commande tree dans mon shell!!! (j'ai verifie avec man). Dans le cas des deux dernieres commandes, ca depend sans doute de la distribution que l'on a.

      Merci a vous trois, :-)
      0
      1. Modérateur
        La commande "tree" n'est pas installée par défaut, c'est pour ça que je ne l'ai pas proposée. Par contre je l'installe systématiquement sur mes systèmes... et le martien aussi apparemment ;-)

        Quand à la commande "ls -R | grep '/$'", effectivement ça dépend des distributions et de la configuration de "ls" (alias pour être précis de la forme "alias ls='ls -F --color=auto'" pour Mandriva par exemple), donc il suffit de l'écrire avec un air patriotique pour qu'elle ait l'effet désirée :
        ls -FR | grep '/$'
        ;-))
        0
        1. Modérateur
          ;-))
          0
        2. Contributeur
          « La commande "tree" n'est pas installée par défaut, c'est pour ça que je ne l'ai pas proposée. Par contre je l'installe systématiquement sur mes systèmes... et le martien aussi apparemment ;-) »

          hihi ^^
          0
      2. Bonjour,

        Oui, effectivement la commande ls -FR | grep '/$' fonctionne. Mais finalement ca ne donne pas, comme l'autre commande, un resultat tres pratique. Par exemple, j'ai le repertoire /Informatique :

        /Informatique

        ../Linux
        ...../Fichiers_systemes
        ...../Pages_man

        ../Programmation
        ...../Langage_C
        ...../Scripts_bash

        ../Test
        ...../Test_1
        ...../Test_2
        ...../Test_3
        ...../Test_4


        Si je fais la commande ls -FR | grep '/$' ca me donne :

        $ ls -FR | grep '/$'
        Linux/
        Programmation/
        Test/
        Fichiers_systemes/
        Pages_man/
        Langage_C/
        Scripts_bash/
        Test_1/
        Test_2/
        Test_3/
        Test_4/


        Dans le cas present je peux quand meme m'y retrouver. Mais dans le cas ou je prends un repertoire plus important, je risque de ne plus m'y retrouver. Dans ce cas, est-il possible d'obtenir quelque chose qui ressemble a :

        /Informatique

        ../Linux
        ...../Fichiers_systemes
        ...../Pages_man

        ../Programmation
        ...../Langage_C
        ... etc ...

        Je crois que la commande de marc[i1] serait plus appropriee, en tout cas, c'est-ce que laisse sous-entendre le nom de la commande. Si la commande tree donne le resultat que je veux, j'aimerais l'installer. Comment fait-on pour installer tree?

        Merci,
        0
        1. Il y a de plus simple et c'est le job de ls justement.
          ls -d *
          0
          1. Modérateur
            Salut,

            Au moins tu as essayé?!
            L'option -d n'a pas le rôle d'afficher que les répetoires mais
            -d, --directory
            afficher les noms de répertoires plutôt que leur contenu et ne pas déréférencer les liens symboliques


            lami20j@debian-acer:~/div$ ls -l 
            total 4 
            drwxr-xr-x 2 lami20j lami20j 4096 30 nov.  17:09 aaa 
            -rw-r--r-- 1 lami20j lami20j    0 30 nov.  17:09 toto.txt 
            lami20j@debian-acer:~/div$ ls -d * 
            aaa  toto.txt 
            lami20j@debian-acer:~/div$ ls -d */ 
            aaa/


            L'option -d n'a pas le rôle d'afficher seulement les répertoires mais (man ls)
            -d, --directory
            afficher les noms de répertoires plutôt que leur contenu et ne pas déréférencer les liens symboliques

            Voici ce qui se passe quand j'utilise -d avec -R
            lami20j@debian-acer:~/div$ ls -lRd * 
            drwxr-xr-x 2 lami20j lami20j 4096 30 nov.  17:11 aaa 
            -rw-r--r-- 1 lami20j lami20j    0 30 nov.  17:09 toto.txt 
            lami20j@debian-acer:~/div$ ls -lR * 
            -rw-r--r-- 1 lami20j lami20j    0 30 nov.  17:09 toto.txt 
            
            aaa: 
            total 0 
            -rw-r--r-- 1 lami20j lami20j 0 30 nov.  17:11 zzz.png 
            lami20j@debian-acer:~/div$ 

            ou
            lami20j@debian-acer:~/div$ ls -l aaa 
            total 0 
            -rw-r--r-- 1 lami20j lami20j 0 30 nov.  17:11 zzz.png 
            lami20j@debian-acer:~/div$ ls -ld aaa 
            drwxr-xr-x 2 lami20j lami20j 4096 30 nov.  17:11 aaa 
            lami20j@debian-acer:~/div$ 
            0
          2. il y a plus simple ! que les repertoires qui contient des fichiers '.' donc
            echo /*/.
            0
        2. Oui en effet.
          L'option --directory est plus subtil que je ne le croyais.

          Merci pour cette précision.
          0
          1. Modérateur
            Salut,

            comme quoi, depuis le début tu devras nous dire ce que tu veux obtenir comme affichage ;-)
            en ce cas, effectivement la commande donnée par marc[i1] est la solution

            si je n'ai pas oublié tu es sous ubuntu
            sudo aptitude install tree
            -1
            1. Oui, lami20j j'aurais du preciser avant. Je retiens la lecon. La commande tree donne bien ce que je voulais.

              Merci et salutations, :-)
              0