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'
11 comentarios
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)
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 ‘/^[-]/'”
Efectivamente, estos alias también funcionan correctamente. 😉
Gracias!!
Saludos.
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
Pues sí, otra forma más de hacerlo.
Gracias!
Saludos.
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
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:
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….
Hay otra forma para que sólo liste los directorios:
$ls -d */
o si lo prefieres:
ls -ld */
Muchas gracias por tu comentario Miguel. Efectivamente, ese es un modo muy cómodo para listar directorios. Muchas gracias! Saludos.