Comando ls de Linux: Listar archivos y directorios

El comando ls en Linux muestra una lista de archivos y subdirectorios en un directorio. Usando ls -la, puedes ver información detallada incluyendo elementos ocultos, permisos, propietario, tamaño y hora de modificación.

Listar el directorio actual o una ruta especificada

Ejecutar el siguiente comando en la terminal muestra los elementos en el directorio de trabajo actual. La ubicación actual se puede verificar con pwd.

pwd
ls

Para ver el contenido de otro directorio, especifique la ruta. Puede usar tanto rutas absolutas como rutas relativas basadas en la ubicación actual.

ls /var

Por defecto, los elementos ocultos cuyos nombres comienzan con un punto se excluyen de la lista. El nombre y el orden de visualización dependen del sistema y de la configuración regional. ls es un comando para leer la lista y no elimina ni modifica archivos.

Ver elementos ocultos e información detallada

-a incluye nombres que comienzan con un punto, y -l muestra en formato detallado. Puede usar ambas opciones juntas.

ls -a
ls -l
ls -la

ls -a también muestra . para el directorio actual y .. para el directorio padre. GNU ls -A muestra elementos ocultos pero omite estas dos entradas. Para mostrar tamaños en unidades legibles por humanos, agregue -h a la lista detallada.

ls -lah

Por ejemplo, puede mostrarse como 1K, 2M. La salida varía según los archivos de destino y la configuración del sistema.

Leyendo una lista detallada

El siguiente es un ejemplo que muestra un archivo regular. El formato de fecha, nombres y números varía según el entorno real.

-rw-r--r-- 1 user group 12 Jan 15 10:30 notes.txt
  • -rw-r--r--: El primer carácter - es un archivo regular, y el resto indica los permisos para el propietario, el grupo y otros. Si comienza con d, es un directorio; si comienza con l, es un enlace simbólico.
  • 1 user group: Número de enlaces duros, propietario y grupo propietario.
  • 12: Tamaño del archivo (en bytes) en la lista detallada básica. Usar -h lo cambiará a una unidad fácilmente legible.
  • Jan 15 10:30 notes.txt: Por defecto, la última hora de modificación y el nombre. El formato de salida depende de la configuración regional y las opciones.

La entrada de tamaño de un directorio no es la suma de los tamaños de los archivos dentro de él. Para verificar el uso del disco de todo el directorio, use una herramienta como du. El objetivo del enlace generalmente se muestra en forma name -> target en la lista detallada.

Verificando el ordenamiento y el directorio en sí

-t ordena por defecto desde el tiempo de modificación más reciente. Usar -r junto con ello invertirá el orden.

ls -lt
ls -ltr

Para verificar los permisos y el propietario del directorio en sí, y no la lista contenida, use -d.

ls -ld /var

-R lista recursivamente también los subdirectorios, por lo que la salida puede ser grande para árboles de directorios grandes. Consulte Manual de ls de GNU o man ls para significados detallados de las opciones.

Reduciendo la lista con un patrón de nombre

En Bash, el asterisco * es un patrón de nombre que coincide con cero o más caracteres. El siguiente comando encuentra elementos en /etc cuyos nombres terminan con .conf.

ls -d /etc/*.conf

La shell primero expande los nombres que coinciden con el patrón y luego los pasa a ls. Dado que se ingresó -d, muestra el nombre del directorio en sí incluso cuando un elemento coincidente es un directorio. En la configuración típica de Bash, los elementos ocultos que comienzan con un punto no coinciden automáticamente. Si no hay nombres que coincidan, el resultado puede variar según las opciones de la shell, como un error o que el patrón se pase tal cual.

Si la ruta contiene espacios, entrecomille la ruta como ls "my folder". En general, si incluso entrecomilla el patrón, la shell no expande el asterisco. Para más detalles, consulte el documento Bash sobre la expansión de nombres de archivos.

Comprobando dispositivos de disco y errores

ls -l /dev/sd* puede mostrar una lista que coincida con los archivos de dispositivo que comienzan con el nombre sd. Sin embargo, no todos los discos y particiones usan este nombre. Otros dispositivos, como NVMe, pueden faltar en la lista, por lo que es más apropiado usar lsblk al examinar dispositivos de bloque y su jerarquía.

lsblk

Si la lista no aparece o se muestra Permission denied, compruebe la existencia de la ruta y los permisos de acceso. Si la salida difiere de lo que espera, verifique el alias del shell como type ls y también revise las descripciones de las opciones de la distribución y ls --help.