Listar SÓLO directorios en Bash

Hoy haciendo un Shell Script me ha surgido la necesidad de hacer un listado de los directorios (y no ficheros) que hay en una determinada ruta.

Al parecer el comando ls no dispone de esta utilidad… cosa que me parece un poco extraña, pero he encontrado un modo de hacerlo con find.

$ find . -maxdepth 1 -type d

Incluso, para más comodidad te puedes hacer un alias:

$ alias lsdirs='find . -maxdepth 1 -type d'

You may also like

11 comments

  • minombresbond 20/05/2008   Reply →

    probaste esto?

    ls -F | grep /

    -F agrega al final ‘*’ a los ejecutables y ‘/’ a los directorios
    grep te entrega solo aquellos terminados en /
    y asi lista solo directorios (con un / al final)

  • Luis R. Hernández F. 19/12/2008   Reply →

    Acabo de crear 2 alias, listar sólo archivos y listar sólo directorios:

    alias d «ls -lrt | awk ‘/^[d]/'»
    alias a «ls -lrt | awk ‘/^[-]/'»

  • Enrique Gómez 20/12/2008   Reply →

    Efectivamente, estos alias también funcionan correctamente. 😉

    Gracias!!

    Saludos.

  • Otto 12/05/2009   Reply →

    Muy parecido al comando de «minombresbond» yo utilizo
    ls -p | grep /
    Donde «-p» -> –file-type añade el indicador / a los directorios

    Pues es bobada… pero pues el «-p» es solo para eso!

    Saludo

  • clasclin 11/07/2010   Reply →

    Util, porque hasta hace un ratito tambien estaba buscando en la man de ls y no me acorbada como lo habia hecho anteriormente. Por cierto lo que queria hacer era algo asi:

    «mv -v –target-directory=../Music/AllisonCrowe `ls -F | grep /`»

    PD: deje el nombre del artista porque es musica legal se puede descargar de jamendo

  • fitorec 15/10/2010   Reply →

    SI EXISTE LA OPCIÓN DE LISTAR SÓLO DIRECTORIOS!, `ls -D`, si lo que deseas es realizar determinada acción en un script en bash basta con:

    
    for directorio in $(ls  -D)
    do
               #lógica de proceso sobre `directorio` p.e.
               echo $directorio
    done
    
    

    • Enrique Gómez 15/10/2010   Reply →

      Pues con ese parámetro a mí me sigue listando ficheros… de hecho, según el man del ls, el -D sirve para mostrar la posición en Bytes del comienzo y final de cada nombre de fichero….

  • miguel 28/03/2011   Reply →

    Hay otra forma para que sólo liste los directorios:

    $ls -d */

    o si lo prefieres:

    ls -ld */

    • Enrique Gómez 17/04/2011   Reply →

      Muchas gracias por tu comentario Miguel. Efectivamente, ese es un modo muy cómodo para listar directorios. Muchas gracias! Saludos.

Leave a comment