Aprende a listar tus ficheros en Linux con el comando ls

En este artículo te mostraré las diferentes opciones que tiene el comando ls para listar tus ficheros.

Diseño web
9 minutos
Hace 6 años
Aprende a listar tus ficheros en Linux con el comando ls

¡Accede a cientos de cursos
con solo un pago al año!

Blog Microbanner

El comando ls nos permite listar el contenido de un directorio.

Su sintaxis es:

1ls {opciones} {directorio} 2

Si no se especifica un argumento para el parámetro directorio, por defecto se listará el contenido del directorio donde nos encontremos ubicados .

Por ejemplo si estamos ubicados en el directorio ~/GitLab/EDcampBogota2017 y no especificamos un argumento para el parámetro directorio, el comando ls listará el contenido del directorio actual ~/GitLab/EDcampBogota2017

1$ ls 2app database package-lock.json routes 3artisan docker phpunit.xml server.php 4bootstrap docker-compose.yml.example public storage 5composer.json lib README.md tests 6config package.json resources webpack.mix.js 7

Si queremos listar el contenido de la carpeta ~/GitLab/EDcampBogota2017/app sin movernos de nuestra ubicación actual, entonces pasamos como argumento ~/GitLab/EDcampBogota2017/app al parámetro directorio:

1$ ls ~/GitLab/EDcampBogota2017/app 2Console Exceptions Http Models Providers 3

También podemos utilizar un patrón como argumento para el parámetro directorio para filtrar la lista de ficheros, por ejemplo para listar los ficheros con extensión .json podemos utilizar:

1$ ls *.json 2composer.json package.json package-lock.json 3

El comando ls cuenta con una variedad de opciones, en este post te contaré acerca de las más utilizadas:

ls -a

La opción -a nos permite listar todos los ficheros incluyendo los ficheros ocultos, los cuales comienzan su nombre con un .

1$ ls -a 2. database .gitignore resources 3.. docker lib routes 4app docker-compose.yml.example package.json server.php 5artisan .editorconfig package-lock.json storage 6bootstrap .env.example phpunit.xml tests 7composer.json .git public webpack.mix.js 8config .gitattributes README.md 9

ls -l

La opción -l nos permite listar los ficheros en formato de una sola columna, listando un fichero por cada línea con la siguiente información: permisos del fichero, el número de enlace, nombre del propietario, nombre del grupo al que pertenece, tamaño en bytes, una marca de tiempo y nombre del fichero.

Por defecto la marca de tiempo corresponde a la fecha de última modificación.

1$ ls -l 2drwxrwxr-x 7 alejandro alejandro 4096 nov 4 2017 app 3-rw-rw-r-- 1 alejandro alejandro 1646 nov 4 2017 artisan 4drwxrwxr-x 3 alejandro alejandro 4096 nov 4 2017 bootstrap 5-rw-rw-r-- 1 alejandro alejandro 1376 nov 4 2017 composer.json 6drwxrwxr-x 2 alejandro alejandro 4096 nov 4 2017 config 7drwxrwxr-x 6 alejandro alejandro 4096 nov 4 2017 database 8drwxrwxr-x 4 alejandro alejandro 4096 nov 4 2017 docker 9-rw-rw-r-- 1 alejandro alejandro 472 nov 4 2017 docker-compose.yml.example 10drwxrwxr-x 3 alejandro alejandro 4096 nov 4 2017 lib 11-rw-rw-r-- 1 alejandro alejandro 1117 nov 4 2017 package.json 12-rw-rw-r-- 1 alejandro alejandro 306461 nov 4 2017 package-lock.json 13-rw-rw-r-- 1 alejandro alejandro 1055 nov 4 2017 phpunit.xml 14drwxrwxr-x 4 alejandro alejandro 4096 nov 4 2017 public 15-rw-rw-r-- 1 alejandro alejandro 2250 dic 8 08:24 README.md 16drwxrwxr-x 5 alejandro alejandro 4096 nov 4 2017 resources 17drwxrwxr-x 2 alejandro alejandro 4096 nov 4 2017 routes 18-rw-rw-r-- 1 alejandro alejandro 563 nov 4 2017 server.php 19drwxrwxr-x 5 alejandro alejandro 4096 nov 4 2017 storage 20drwxrwxr-x 4 alejandro alejandro 4096 nov 4 2017 tests 21-rw-rw-r-- 1 alejandro alejandro 434 nov 4 2017 webpack.mix.js 22

También puedes utilizar una combinación de opciones, por ejemplo para mostrar una lista de ficheros detallada incluyendo los ficheros ocultos, puedes utilizar el comando ls -l -a en donde se indica cada opción por separado, o si lo prefieres puedes agrupar las opciones así: ls -la.

En adelante usaré la agrupación de opciones para listar los ficheros de forma detallada -l junto con la opción que se esté explicando.

ls -t

Por defecto los ficheros son listados por orden alfabético, para listar los ficheros por orden de la marca de tiempo (fecha de modificación por defecto), utilizamos la opción -t

1$ ls -lt 2-rwxrwxr-x 1 alejandro alejandro 16296233 dic 8 08:37 cursos 3-rw-rw-r-- 1 alejandro alejandro 2250 dic 8 08:24 README.md 4drwxrwxr-x 5 alejandro alejandro 4096 nov 4 2017 resources 5drwxrwxr-x 2 alejandro alejandro 4096 nov 4 2017 routes 6-rw-rw-r-- 1 alejandro alejandro 563 nov 4 2017 server.php 7drwxrwxr-x 5 alejandro alejandro 4096 nov 4 2017 storage 8drwxrwxr-x 4 alejandro alejandro 4096 nov 4 2017 tests 9-rw-rw-r-- 1 alejandro alejandro 434 nov 4 2017 webpack.mix.js 10drwxrwxr-x 4 alejandro alejandro 4096 nov 4 2017 public 11-rw-rw-r-- 1 alejandro alejandro 1117 nov 4 2017 package.json 12-rw-rw-r-- 1 alejandro alejandro 306461 nov 4 2017 package-lock.json 13-rw-rw-r-- 1 alejandro alejandro 1055 nov 4 2017 phpunit.xml 14drwxrwxr-x 4 alejandro alejandro 4096 nov 4 2017 docker 15-rw-rw-r-- 1 alejandro alejandro 472 nov 4 2017 docker-compose.yml.example 16drwxrwxr-x 3 alejandro alejandro 4096 nov 4 2017 lib 17drwxrwxr-x 7 alejandro alejandro 4096 nov 4 2017 app 18-rw-rw-r-- 1 alejandro alejandro 1646 nov 4 2017 artisan 19drwxrwxr-x 3 alejandro alejandro 4096 nov 4 2017 bootstrap 20-rw-rw-r-- 1 alejandro alejandro 1376 nov 4 2017 composer.json 21drwxrwxr-x 2 alejandro alejandro 4096 nov 4 2017 config 22drwxrwxr-x 6 alejandro alejandro 4096 nov 4 2017 database 23

ls -r

Para revertir el orden de clasificación utilizamos la opción r, como el orden por defecto es alfabético de A-Z, la opción -r revierte el orden a Z-A.

1$ ls -lr 2-rw-rw-r-- 1 alejandro alejandro 434 nov 4 2017 webpack.mix.js 3drwxrwxr-x 4 alejandro alejandro 4096 nov 4 2017 tests 4drwxrwxr-x 5 alejandro alejandro 4096 nov 4 2017 storage 5-rw-rw-r-- 1 alejandro alejandro 563 nov 4 2017 server.php 6drwxrwxr-x 2 alejandro alejandro 4096 nov 4 2017 routes 7drwxrwxr-x 5 alejandro alejandro 4096 nov 4 2017 resources 8-rw-rw-r-- 1 alejandro alejandro 2250 dic 8 08:24 README.md 9drwxrwxr-x 4 alejandro alejandro 4096 nov 4 2017 public 10-rw-rw-r-- 1 alejandro alejandro 1055 nov 4 2017 phpunit.xml 11-rw-rw-r-- 1 alejandro alejandro 306461 nov 4 2017 package-lock.json 12-rw-rw-r-- 1 alejandro alejandro 1117 nov 4 2017 package.json 13drwxrwxr-x 3 alejandro alejandro 4096 nov 4 2017 lib 14-rw-rw-r-- 1 alejandro alejandro 472 nov 4 2017 docker-compose.yml.example 15drwxrwxr-x 4 alejandro alejandro 4096 nov 4 2017 docker 16drwxrwxr-x 6 alejandro alejandro 4096 nov 4 2017 database 17-rwxrwxr-x 1 alejandro alejandro 16296233 dic 8 08:37 cursos 18drwxrwxr-x 2 alejandro alejandro 4096 nov 4 2017 config 19-rw-rw-r-- 1 alejandro alejandro 1376 nov 4 2017 composer.json 20drwxrwxr-x 3 alejandro alejandro 4096 nov 4 2017 bootstrap 21-rw-rw-r-- 1 alejandro alejandro 1646 nov 4 2017 artisan 22drwxrwxr-x 7 alejandro alejandro 4096 nov 4 2017 app 23

Si usamos una combinación de las opciones -t y -r, la opción -r revierte el orden, listando los ficheros del más antiguo al más reciente.

1$ ls -ltr 2drwxrwxr-x 6 alejandro alejandro 4096 nov 4 2017 database 3drwxrwxr-x 2 alejandro alejandro 4096 nov 4 2017 config 4-rw-rw-r-- 1 alejandro alejandro 1376 nov 4 2017 composer.json 5drwxrwxr-x 3 alejandro alejandro 4096 nov 4 2017 bootstrap 6-rw-rw-r-- 1 alejandro alejandro 1646 nov 4 2017 artisan 7drwxrwxr-x 7 alejandro alejandro 4096 nov 4 2017 app 8drwxrwxr-x 3 alejandro alejandro 4096 nov 4 2017 lib 9-rw-rw-r-- 1 alejandro alejandro 472 nov 4 2017 docker-compose.yml.example 10drwxrwxr-x 4 alejandro alejandro 4096 nov 4 2017 docker 11-rw-rw-r-- 1 alejandro alejandro 1055 nov 4 2017 phpunit.xml 12-rw-rw-r-- 1 alejandro alejandro 306461 nov 4 2017 package-lock.json 13-rw-rw-r-- 1 alejandro alejandro 1117 nov 4 2017 package.json 14drwxrwxr-x 4 alejandro alejandro 4096 nov 4 2017 public 15-rw-rw-r-- 1 alejandro alejandro 434 nov 4 2017 webpack.mix.js 16drwxrwxr-x 4 alejandro alejandro 4096 nov 4 2017 tests 17drwxrwxr-x 5 alejandro alejandro 4096 nov 4 2017 storage 18-rw-rw-r-- 1 alejandro alejandro 563 nov 4 2017 server.php 19drwxrwxr-x 2 alejandro alejandro 4096 nov 4 2017 routes 20drwxrwxr-x 5 alejandro alejandro 4096 nov 4 2017 resources 21-rw-rw-r-- 1 alejandro alejandro 2250 dic 8 08:24 README.md 22-rwxrwxr-x 1 alejandro alejandro 16296233 dic 8 08:37 cursos 23

ls -h

Como el tamaño de los ficheros es listado en bytes no comprensible para humanos, la opción -h (human-readable) añade una letra indicando el tamaño para facilitarnos la lectura.

1$ ls -lh 2drwxrwxr-x 7 alejandro alejandro 4,0K nov 4 2017 app 3-rw-rw-r-- 1 alejandro alejandro 1,7K nov 4 2017 artisan 4drwxrwxr-x 3 alejandro alejandro 4,0K nov 4 2017 bootstrap 5-rw-rw-r-- 1 alejandro alejandro 1,4K nov 4 2017 composer.json 6drwxrwxr-x 2 alejandro alejandro 4,0K nov 4 2017 config 7-rwxrwxr-x 1 alejandro alejandro 16M dic 8 08:37 cursos 8drwxrwxr-x 6 alejandro alejandro 4,0K nov 4 2017 database 9drwxrwxr-x 4 alejandro alejandro 4,0K nov 4 2017 docker 10-rw-rw-r-- 1 alejandro alejandro 472 nov 4 2017 docker-compose.yml.example 11drwxrwxr-x 3 alejandro alejandro 4,0K nov 4 2017 lib 12-rw-rw-r-- 1 alejandro alejandro 1,1K nov 4 2017 package.json 13-rw-rw-r-- 1 alejandro alejandro 300K nov 4 2017 package-lock.json 14-rw-rw-r-- 1 alejandro alejandro 1,1K nov 4 2017 phpunit.xml 15drwxrwxr-x 4 alejandro alejandro 4,0K nov 4 2017 public 16-rw-rw-r-- 1 alejandro alejandro 2,2K dic 8 08:24 README.md 17drwxrwxr-x 5 alejandro alejandro 4,0K nov 4 2017 resources 18drwxrwxr-x 2 alejandro alejandro 4,0K nov 4 2017 routes 19-rw-rw-r-- 1 alejandro alejandro 563 nov 4 2017 server.php 20drwxrwxr-x 5 alejandro alejandro 4,0K nov 4 2017 storage 21drwxrwxr-x 4 alejandro alejandro 4,0K nov 4 2017 tests 22-rw-rw-r-- 1 alejandro alejandro 434 nov 4 2017 webpack.mix.js 23

ls -S

Así como podemos organizar la lista de ficheros por nombre y fecha de modificación, también podemos organizar la lista de ficheros por tamaño haciendo uso de la opción -S

1$ ls -lhS 2-rwxrwxr-x 1 alejandro alejandro 16M dic 8 08:37 cursos 3-rw-rw-r-- 1 alejandro alejandro 300K nov 4 2017 package-lock.json 4drwxrwxr-x 7 alejandro alejandro 4,0K nov 4 2017 app 5drwxrwxr-x 3 alejandro alejandro 4,0K nov 4 2017 bootstrap 6drwxrwxr-x 2 alejandro alejandro 4,0K nov 4 2017 config 7drwxrwxr-x 6 alejandro alejandro 4,0K nov 4 2017 database 8drwxrwxr-x 4 alejandro alejandro 4,0K nov 4 2017 docker 9drwxrwxr-x 3 alejandro alejandro 4,0K nov 4 2017 lib 10drwxrwxr-x 4 alejandro alejandro 4,0K nov 4 2017 public 11drwxrwxr-x 5 alejandro alejandro 4,0K nov 4 2017 resources 12drwxrwxr-x 2 alejandro alejandro 4,0K nov 4 2017 routes 13drwxrwxr-x 5 alejandro alejandro 4,0K nov 4 2017 storage 14drwxrwxr-x 4 alejandro alejandro 4,0K nov 4 2017 tests 15-rw-rw-r-- 1 alejandro alejandro 2,2K dic 8 08:24 README.md 16-rw-rw-r-- 1 alejandro alejandro 1,7K nov 4 2017 artisan 17-rw-rw-r-- 1 alejandro alejandro 1,4K nov 4 2017 composer.json 18-rw-rw-r-- 1 alejandro alejandro 1,1K nov 4 2017 package.json 19-rw-rw-r-- 1 alejandro alejandro 1,1K nov 4 2017 phpunit.xml 20-rw-rw-r-- 1 alejandro alejandro 563 nov 4 2017 server.php 21-rw-rw-r-- 1 alejandro alejandro 472 nov 4 2017 docker-compose.yml.example 22-rw-rw-r-- 1 alejandro alejandro 434 nov 4 2017 webpack.mix.js 23

ls -X

Esta opción nos permite organizar los ficheros alfabéticamente por la extensión del fichero.

1$ ls -lX 2drwxrwxr-x 7 alejandro alejandro 4096 nov 4 2017 app 3-rw-rw-r-- 1 alejandro alejandro 1646 nov 4 2017 artisan 4drwxrwxr-x 3 alejandro alejandro 4096 nov 4 2017 bootstrap 5drwxrwxr-x 2 alejandro alejandro 4096 nov 4 2017 config 6-rwxrwxr-x 1 alejandro alejandro 16296233 dic 8 08:37 cursos 7drwxrwxr-x 6 alejandro alejandro 4096 nov 4 2017 database 8drwxrwxr-x 4 alejandro alejandro 4096 nov 4 2017 docker 9drwxrwxr-x 3 alejandro alejandro 4096 nov 4 2017 lib 10drwxrwxr-x 4 alejandro alejandro 4096 nov 4 2017 public 11drwxrwxr-x 5 alejandro alejandro 4096 nov 4 2017 resources 12drwxrwxr-x 2 alejandro alejandro 4096 nov 4 2017 routes 13drwxrwxr-x 5 alejandro alejandro 4096 nov 4 2017 storage 14drwxrwxr-x 4 alejandro alejandro 4096 nov 4 2017 tests 15-rw-rw-r-- 1 alejandro alejandro 472 nov 4 2017 docker-compose.yml.example 16-rw-rw-r-- 1 alejandro alejandro 434 nov 4 2017 webpack.mix.js 17-rw-rw-r-- 1 alejandro alejandro 1376 nov 4 2017 composer.json 18-rw-rw-r-- 1 alejandro alejandro 1117 nov 4 2017 package.json 19-rw-rw-r-- 1 alejandro alejandro 306461 nov 4 2017 package-lock.json 20-rw-rw-r-- 1 alejandro alejandro 2250 dic 8 08:24 README.md 21-rw-rw-r-- 1 alejandro alejandro 563 nov 4 2017 server.php 22-rw-rw-r-- 1 alejandro alejandro 1055 nov 4 2017 phpunit.xml 23

ls -F

La opción F agrega a cada nombre de directorio un / y tras cada nombre de un ejecutable un \*

1$ ls -lF 2drwxrwxr-x 7 alejandro alejandro 4096 nov 4 2017 app/ 3-rw-rw-r-- 1 alejandro alejandro 1646 nov 4 2017 artisan 4drwxrwxr-x 3 alejandro alejandro 4096 nov 4 2017 bootstrap/ 5-rw-rw-r-- 1 alejandro alejandro 1376 nov 4 2017 composer.json 6drwxrwxr-x 2 alejandro alejandro 4096 nov 4 2017 config/ 7-rwxrwxr-x 1 alejandro alejandro 16296233 dic 8 08:37 cursos* 8drwxrwxr-x 6 alejandro alejandro 4096 nov 4 2017 database/ 9drwxrwxr-x 4 alejandro alejandro 4096 nov 4 2017 docker/ 10-rw-rw-r-- 1 alejandro alejandro 472 nov 4 2017 docker-compose.yml.example 11drwxrwxr-x 3 alejandro alejandro 4096 nov 4 2017 lib/ 12-rw-rw-r-- 1 alejandro alejandro 1117 nov 4 2017 package.json 13-rw-rw-r-- 1 alejandro alejandro 306461 nov 4 2017 package-lock.json 14-rw-rw-r-- 1 alejandro alejandro 1055 nov 4 2017 phpunit.xml 15drwxrwxr-x 4 alejandro alejandro 4096 nov 4 2017 public/ 16-rw-rw-r-- 1 alejandro alejandro 2250 dic 8 08:24 README.md 17drwxrwxr-x 5 alejandro alejandro 4096 nov 4 2017 resources/ 18drwxrwxr-x 2 alejandro alejandro 4096 nov 4 2017 routes/ 19-rw-rw-r-- 1 alejandro alejandro 563 nov 4 2017 server.php 20drwxrwxr-x 5 alejandro alejandro 4096 nov 4 2017 storage/ 21drwxrwxr-x 4 alejandro alejandro 4096 nov 4 2017 tests/ 22-rw-rw-r-- 1 alejandro alejandro 434 nov 4 2017 webpack.mix.js 23

Recuerda que puedes utilizar una combinación de todas estas opciones para listar tus ficheros de acuerdo a tus necesidades, por ejemplo si necesitamos listar de forma detallada sólo los ficheros .json del directorio actual, ordenandolos por el tamaño de los ficheros del menos pesado al más pesado, utilizarías un comando como el siguiente:

1$ ls -lhSr *.json 2-rw-rw-r-- 1 alejandro alejandro 1,1K nov 4 2017 package.json 3-rw-rw-r-- 1 alejandro alejandro 1,4K nov 4 2017 composer.json 4-rw-rw-r-- 1 alejandro alejandro 300K nov 4 2017 package-lock.json 5

Comentarios de los usuarios

Pregunta a ChatEDT