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
Lectura de 9 minutos
8 dic. 2018
Aprende a listar tus ficheros en Linux con el comando ls

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

Su sintaxis es:

ls {opciones} {directorio}

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

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

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:

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

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:

$ ls *.json
composer.json  package.json  package-lock.json

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 .

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

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.

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

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

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

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.

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

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.

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

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.

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

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

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

ls -X

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

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

ls -F

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

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

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:

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

Alejandro Rodriguez

@ajrdrgzVer perfil

Developer 🚀 - Gopher Instagram: https://www.instagram.com/aj.rdrgz/

Recuerda iniciar sesión para comentar este articulo

Cursos recomendados

Administración de servidores Linux

Administración de servidores Linux

Avatar

Manuel Rodriguez

5

4.7

Programación desde cero (gratis - edición 2020)

Programación desde cero (gratis - edición 2020)

Avatar

Alvaro Felipe

5

4.8