Mostrar directorios solamente

Resuelto
artagon7 Mensajes publicados 423 Estado Miembro -  
 dennys -
Hola,

Quiero mostrar solo los directorios contenidos en un directorio dado. Leí el man de ls y lo que encontré es la opción -d, pero no funciona. ¿Cómo se hace para mostrar solo los directorios (de forma recursiva)?

Gracias
Configuración: Linux Konqueror 3.5

9 respuestas

  1. medem Mensajes publicados 2 Estado Miembro 9
     
    ¡Hola!
    También puedes usar “ls -d */”
    ls -d: para decirle que no descienda en los subdirectorios
    */: para decirle que muestre todos los que terminan en “/” que son únicamente los directorios
    +
    12
    1. artagon7 Mensajes publicados 423 Estado Miembro 7
       
      Entendido. Gracias.
      0
    2. dennys
       
      Gracias. Útil y completo
      0
  2. marc[i1] Mensajes publicados 2603 Estado Colaborador 382
     
    pero yo prefiero tree para eso.

    tree -d repertoire/


    --

    Archlinux ... Una distribución ligera, rápida y KISS en archlinux.fr
    4
  3. lami20j Mensajes publicados 21506 Fecha de registro   Estado Moderador, Colaborador de seguridad Última intervención   3 571
     
    Hola,
    ls -lR | grep ^d 
    o
    find . -type d -exec ls -ld {} \; 
    --
    106485010510997108
    3
    1. jipicy Mensajes publicados 40842 Fecha de registro   Estado Moderador Última intervención   4 898
       
      Hola,

      O
      ls -R | grep '/$'
      ;-))

      --
      JP - Criador de pingüinos -
      Haz un gesto por el medio ambiente, cierra tus ventanas y adopta a un pingüino.
      0
  4. artagon7 Mensajes publicados 423 Estado Miembro 7
     
    He intentado las tres órdenes y solo la orden del «perlien» a lami20j que funciona, es decir ls -lR | grep ^d.

    En el caso de la orden propuesta por jipicy ( ls -R | grep '/$' ), no muestra nada mientras que la de marc[i1] no funciona ya que no hay ningún comando tree en mi shell!!! (lo comprobé con man). En el caso de las dos últimas órdenes, probablemente depende de la distribución que tengamos.

    Gracias a ustedes tres, :-)
    0
  5. jipicy Mensajes publicados 40842 Fecha de registro   Estado Moderador Última intervención   4 898
     
    El comando "tree" no está instalado por defecto, por eso no lo propuse. En cambio lo instalo sistemáticamente en mis sistemas... y el marciano también, aparentemnte ;-)

    En cuanto al comando ""ls -R | grep '/$'"", de hecho depende de las distribuciones y de la configuración de "ls" (alias para ser precisos de la forma "alias ls='ls -F --color=auto'" para Mandriva, por ejemplo), así que basta escribirlo con un aire patriótico para que tenga el efecto deseado:
    ls -FR | grep '/$'
    ;-))
    0
    1. lami20j Mensajes publicados 21506 Fecha de registro   Estado Moderador, Colaborador de seguridad Última intervención   3 571
       
      ;-))
      --
      106485010510997108
      0
    2. marc[i1] Mensajes publicados 2603 Estado Colaborador 382
       
      « El comando "tree" no está instalado por defecto, por eso no lo propuse. Pero lo instalo sistemáticamente en mis sistemas... y también en el marciano, aparentemente ;-) »

      hihi ^^

      --

      Archlinux ... Una distribución ligera, rápida y KISS en archlinux.fr
      0
  6. artagon7 Mensajes publicados 423 Estado Miembro 7
     
    Bonjour,

    Oui, effectivement la commande ls -FR | grep '/$' fonctionne. Mais finalement ça ne donne pas, comme l'autre commande, un résultat très pratique. Par exemple, j'ai le répertoire /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 '/$' ça 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 présent je peux quand même m’y retrouver. Mais dans le cas où je prends un répertoire plus important, je risque de ne plus m’y retrouver. Dans ce cas, est-il possible d’obtenir quelque chose qui ressemble à :

    /Informatique

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

    ../Programmation
    ...../Langage_C

    ... etc ...

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

    Merci,
    0
  7. bayrouni
     
    Hay algo más simple y ese es precisamente el trabajo de ls.
    ls -d *
    0
    1. lami20j Mensajes publicados 21506 Fecha de registro   Estado Moderador, Colaborador de seguridad Última intervención   3 571
       
      Hola,

      Al menos lo intentaste?!
      La opción -d no tiene el papel de mostrar solo los directorios sino
      -d, --directory
      mostrar los nombres de los directorios en lugar de su contenido y no dereferenciar los enlaces simbólicos



      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/



      La opción -d no tiene el papel de mostrar solo los directorios sino (man ls)
      -d, --directory
      mostrar los nombres de directorios en lugar de su contenido y no dereferenciar los enlaces simbólicos

      Aquí está lo que pasa cuando uso -d con -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$ 

      o
      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. algerien
       
      hay más sencillo! que los directorios que contienen archivos '.' así que
      echo /*/.
      0
  8. bayrouni
     
    Sí, de hecho.
    La opción --directory es más sutil de lo que creía.

    Gracias por esta precisión.
    0
  9. lami20j Mensajes publicados 21506 Fecha de registro   Estado Moderador, Colaborador de seguridad Última intervención   3 571
     
    Hola,

    como sea, desde el principio deberás decirnos qué quieres obtener como visualización ;-)
    en ese caso, efectivamente la orden dada por marc[i1] es la solución

    si no me equivoco estás en ubuntu
    sudo aptitude install tree

    --
    106485010510997108
    -1
    1. artagon7 Mensajes publicados 423 Estado Miembro 7
       
      Sí, lami20j debería haberlo precisado antes. Tomo la lección. El comando tree da exactamente lo que quería.

      Gracias y saludos, :-)
      0