Cómo usar el comando ls para enumerar archivos y directorios en Linux

Usamos el comando ls de Linux todos los días sin pensar en ello. Eso es una lástima. Préstele algo de atención y encontrará muchas opciones útiles, incluidas algunas que debe agregar a su arsenal de línea de comandos.

ls enumera archivos y directorios

El comando ls es probablemente el primer comando que encuentran la mayoría de los usuarios de Linux. Aquellos de nosotros que merodeamos por la línea de comandos la usamos día tras día sin siquiera pensar en ello. Eso podría explicar por qué hay más en este comando de lo que la mayoría de los usuarios creen. Enumeramos archivos con él para ver qué hay en un directorio. Enumeramos archivos en formato largo cuando queremos ver los permisos en un archivo. Más allá de eso, recibe poca consideración.

El comando ls es uno de esos comandos con una gran cantidad de opciones. Quizás esto sea parte del problema. Hay tantas opciones, ¿cómo las examinas para encontrar las útiles? Y habiéndolos encontrado, ¿cómo los recuerda?

Las permutaciones útiles del comando ls con sus cadenas de opciones y parámetros son los candidatos perfectos para los alias. De hecho, en la mayoría de las distribuciones, lo que se considera el comando ls «desnudo» es en realidad un alias. Entre otras cosas, el comando type se puede utilizar para mostrar la definición subyacente de alias. Veamos la definición de ls:

tipo ls

escriba ls en una ventana de terminal

Los parámetros –color = auto se incluyen automáticamente cada vez que usa el comando ls. Esto es lo que proporciona los diferentes colores para los diferentes tipos de archivos en los listados.

Listados simples de ls

Todos los que han pasado algún tiempo usando la terminal de Linux saben que, de forma predeterminada, ls enumera los archivos y directorios en el directorio actual.

ls

está en una ventana de terminal

Si desea que su listado se produzca en una sola columna, use la opción -1 (un archivo por línea):

ls -1

ls -1 en una ventana de terminal

Discutiremos ese nombre de archivo de aspecto extraño en la parte superior de la lista en un minuto.

Usando ls en diferentes directorios

Para que ls enumere los archivos en un directorio que no sea el directorio actual, pase la ruta al directorio a ls en la línea de comando. También puede pasar más de un directorio a ls y hacer que se enumeren uno tras otro. Aquí, le pedimos a ls que enumere los archivos en dos directorios, uno llamado «Ayuda» y el otro llamado «gc_help».

ls Help gc_help

ls Help gc_help en una ventana de terminal

Cuando ls ha enumerado el contenido del primer directorio, enumera el contenido del segundo. Imprime el nombre de cada directorio a medida que los procesa:

  Cómo configurar Cairo Dock en el escritorio de Linux

Nombre del directorio que muestra ls antes de que se enumeren los contenidos.

Usar patrones de archivo

Para enumerar selectivamente un conjunto de archivos, utilice la coincidencia de patrones. El signo de interrogación «?» representará cualquier carácter individual y el asterisco «*» representará cualquier cadena de caracteres. Para enumerar los archivos o directorios que tienen nombres que comienzan con «ip_», utilice este formato:

ls ip_*

ls ip_ * en una ventana de terminal

Para enumerar archivos que tienen extensiones «.c», utilice este formato:

ls *.c

ls * .c en una ventana de terminal

También puede usar ls con grep y usar grep’s capacidades de coincidencia de patrones. Busquemos archivos que tengan la cadena «_pin_» en su nombre:

ls | grep _pin_

ls |  grep _pin_ en una ventana de terminal

Esto es casi lo mismo que usar ls por sí solo, con dos comodines:

ls | grep _pin_
ls *_pin_*

ls |  grep _pin_ en una ventana de terminal

¿Por qué casi lo mismo? Tenga en cuenta los diferentes diseños. grep fuerza la salida a un solo nombre de archivo por formato de línea.

Caracteres que no se imprimen

Es posible encontrarse con un nombre de archivo que tenga un carácter no imprimible o de control en su nombre de archivo. Por lo general, esto puede suceder cuando expande un archivo que ha descargado de la web o recupera un repositorio de git, y el autor original cometió un error al crear un archivo pero no lo detectó.

Nuestro archivo extraño es uno de estos:

Nombre de archivo con carácter de control en una ventana de terminal

Si lo miramos en el navegador de archivos y presionamos «F2» para cambiarle el nombre, los caracteres que no se imprimen están representados por un símbolo extraño.

Nombre de archivo con un carácter de control en él, en la ventana de diálogo de cambio de nombre

Puede utilizar la opción -b (escape) para que pueda ver qué contiene realmente el nombre del archivo. Esta opcin hace que ls use las secuencias de escape del Lenguaje de programación C para representar los caracteres de control.

ls -b a*

ls -ba * en una ventana de terminal

El misterioso personaje se revela como un carácter de nueva línea, representado en C como «n».

Ignorando archivos

Para que se omitan ciertos archivos de una lista, use la opción –hide. Suponga que no desea ver los archivos «.bak» de respaldo en la lista. Podrías usar este comando:

ls
ls --hide=*.bak

ls --hide = *. bak en una ventana de terminal

Los archivos “.bak” no se incluyen en la segunda lista.

El listado de formato largo

La opción -l (lista larga) hace que ls proporcione información detallada sobre cada archivo.

ls -l

ls -l en una ventana de terminal

Aquí hay mucha información, así que analicémosla.

Lo primero que muestra ls es el tamaño total de todos los archivos de la lista. Luego, cada archivo o directorio se muestra en una línea por sí mismo.

El primer conjunto de diez letras y guiones son el tipo de archivo y el propietario, grupo y otros permisos de archivo.

El primer carácter representa el tipo de archivo. Será uno de:

-: un archivo normal.
b: Un archivo especial de bloque.
c: un archivo especial de caracteres.
d: un directorio.
l: Un vínculo simbólico.
n: un archivo de red.
p: una tubería con nombre.
s: un enchufe.

Los siguientes nueve caracteres son tres grupos de tres caracteres que se muestran de forma contigua. Cada grupo de tres representa los permisos de lectura, escritura y ejecución, en ese orden. Si se concede el permiso, habrá un r, w o x presentes. Si no se concede el permiso, se muestra un guión.

El primer conjunto de tres caracteres son los permisos del propietario del archivo. El segundo conjunto de tres permisos es para miembros del grupo y el último conjunto de tres permisos es para otros.

  Cómo configurar Mattermost en Linux

A veces, el permiso de ejecución para el propietario está representado por una s. Este es el setuid poco. Si está presente, significa que el archivo se ejecuta con los privilegios del propietario del archivo, no del usuario que lo ejecuta.

El permiso de ejecución para el grupo también puede ser un s. Este es el setgid poco. Cuando esto se aplica a un archivo, significa que el archivo se ejecutará con los privilegios del grupo del propietario. Cuando se usa con un directorio, cualquier archivo creado dentro de él tomará sus permisos de grupo del directorio en el que se están creando, no del usuario que está creando el archivo.

El permiso de ejecución para los demás a veces puede representarse mediante una t. Este es el poco pegajoso. Suele aplicarse a directorios. Si se establece, independientemente de los privilegios de escritura y ejecución establecidos en los archivos del directorio, solo el propietario del archivo, el propietario del directorio o el usuario raíz pueden cambiar el nombre o eliminar los archivos del directorio.

Un uso común del bit pegajoso es en carpetas como “/ tmp”. Todos los usuarios de la computadora pueden escribirlo. La parte adhesiva del directorio garantiza que los usuarios, y los procesos iniciados por los usuarios, solo puedan cambiar el nombre o eliminar sus propios archivos temporales.

Podemos ver el bit adhesivo en el directorio «/ tmp». Tenga en cuenta el uso de la opción -d (directorio). Esto hace que ls informe sobre los detalles del directorio. Sin esta opción, ls informará sobre los archivos dentro del directorio.

ls -l -d /tmp

ls -l -d / tmp en una ventana de terminal

El número que sigue a los permisos es el número de enlaces físicos al archivo o directorio. Para un archivo, este suele ser uno, pero si se crean otros enlaces físicos, este número aumentará. Por lo general, un directorio tiene al menos dos enlaces físicos. Uno es un enlace a sí mismo y el otro es su entrada en su directorio principal.

A continuación, se muestran el nombre del propietario y el grupo. Le siguen el tamaño del archivo y la fecha de la última modificación del archivo. Finalmente, se proporciona el nombre del archivo.

Tamaños de archivo legibles por humanos

Tener los tamaños de archivo en bytes no siempre es conveniente. Para ver los tamaños de archivo en las unidades más apropiadas (kilobytes, megabytes, etc.) use la opción -h (legible por humanos):

ls -l -h

ls -l -h en una ventana de terminal

Mostrar archivos ocultos

Para ver los archivos ocultos, use la opción -a (todos):

ls -l -a

ls -l -a en una ventana de terminal

Las dos entradas «.» y «..» representan el directorio actual y el directorio principal, respectivamente. Un archivo llamado «.base_settings» ahora es visible por primera vez.

Omitiendo. y .. de Listados

Si no desea que su anuncio esté abarrotado con el «.» y entradas «..», pero desea ver archivos ocultos, utilice la opción -A (casi todos):

ls -l -A

ls -l -A en una ventana de terminal

El archivo oculto todavía aparece en la lista, pero el «.» y se suprimen las entradas «..».

  Cómo usar FFMpeg con una GUI en Linux usando QWinFF

Listado de directorios de forma recursiva

Para que ls enumere los archivos en todos los subdirectorios, use la opción -R (recursiva)

ls -l -R

ls -l -R en una ventana de terminal

ls recorre todo el árbol de directorios debajo del directorio de inicio y enumera los archivos en cada subdirectorio.

salida de ls enumerando directorios de forma recursiva

Visualización del UID y GID

Para que se muestre el ID de usuario y el ID de grupo en lugar del nombre de usuario y el nombre del grupo, utilice la opción -n (uid numérico y gid).

ls -n

ls -n en una ventana de terminal

Ordenar los listados

Puede ordenar la lista por extensión, tamaño de archivo o fecha de modificación. Estas opciones no tienen que usarse con el formato de lista larga, pero generalmente tiene sentido hacerlo. Si está ordenando por tamaño de archivo, tiene sentido ver los tamaños de archivo en la lista. Cuando clasifica por tipo de extensión, el formato de lista larga no es tan importante.

Para ordenar por extensión, use la opción -X (ordenar por extensión).

ls -X -1

ls -X -1 en una ventana de terminal

Los directorios se enumeran primero (sin extensiones), luego el resto sigue en orden alfabético, según las extensiones.

Para ordenar por tamaño de archivo, use la opción -S (ordenar por tamaño de archivo).

ls -l -h -S

ls -l -h -S en una ventana de terminal

El orden de clasificación es de mayor a menor.

Para ordenar la lista por hora de modificación, use la opción -t (ordenar por hora de modificación).

ls -l -t

ls -l -t en una ventana de terminal

La lista está ordenada por la hora de modificación.

Si la hora de modificación del archivo está dentro del año actual, la información que se muestra es el mes, el día y la hora. Si la fecha de modificación no estaba en el año actual, la información que se muestra es el mes, el día y el año.

Una forma rápida de obtener los archivos más nuevos y más antiguos en un directorio es usar ls con los comandos head y tail.

Para obtener el archivo o directorio más reciente, use este comando:

ls -t | head -1

Para obtener el archivo o directorio más antiguo, use este comando:

ls -t | tail -1

ls -t |  head -1 en una ventana de terminal

Para invertir el orden de clasificación

Para invertir cualquiera de los órdenes de clasificación, use la opción -r (invertir).

ls -l -h -S -r

ls -l -h -S -r en una ventana de terminal

La lista ahora está ordenada desde el archivo más pequeño hasta el archivo más grande.

Y hay mas

Consulte la página de manual de ls, hay muchas más opciones. Algunos de ellos satisfacen casos de uso poco conocidos, pero de vez en cuando, se alegrará de conocerlos.

¿Necesita ver las marcas de tiempo de los archivos con la máxima precisión que puede proporcionar Linux? Utilice la opción de tiempo completo:

ls --full-time

¿Quizás desea ver el número de inodo de los archivos? Utilice la opción de inodo:

ls -i

¿Está trabajando en una pantalla monocromática y desea eliminar todo riesgo de confundir archivos con directorios y enlaces? Use la opción de clasificación y ls agregará uno de estos a cada entrada de la lista:

/: Un directorio.
@: Un enlace simbólico.
|: Una tubería con nombre.
=: Un enchufe.
*: Archivos ejecutables

ls -F

Investiga un poco. Descubrirás que ls es una vena rica y seguirás apareciendo gemas.