15%

Ahorra 15%<\/span> en todos los servicios de hosting

Pon a prueba tus habilidades y obtén Descuento<\/span> en cualquier plan de hosting

Usa el código:

Skills
Comenzar
02.09.2025

Cómo Listar Directorios en Linux: Una Guía Completa para Principiantes y Administradores de Sistemas

Trabajar en Linux a menudo se siente como navegar una vasta biblioteca. En lugar de estantes, tienes directorios (carpetas), y en lugar de libros, tienes archivos. Ya seas un administrador de sistemas experimentado, un desarrollador o un principiante curioso que recién comienza, dominar los fundamentos de la navegación del sistema de archivos es innegociable. Una de las habilidades fundamentales más críticas es saber cómo listar directorios de manera eficiente y precisa.

Esta guía te lleva a través de cada método práctico para listar directorios en Linux, explica las fortalezas y limitaciones de cada enfoque, y te muestra exactamente cuándo usar qué herramienta — incluyendo en scripts y entornos de servidores de producción.

Por qué importa listar directorios

En una computadora personal, podrías ocasionalmente examinar tu carpeta “Documentos” o “Descargas” a través de una interfaz gráfica. En un servidor Linux, sin embargo, los directorios están en el corazón de casi todas las tareas administrativas que realizarás:

  • Administración de sistemas: Audita rápidamente qué vive en /etc/, /var/log/ o /usr/local/bin/.
  • Alojamiento web: Localiza y gestiona carpetas de proyectos bajo /var/www/ o /home/.
  • Desarrollo de software: Identifica directorios de control de versiones y entorno como .git/ o .venv/.
  • Auditoría de seguridad: Confirma exactamente qué está instalado, configurado y ejecutándose en el sistema.
  • Automatización y scripting: Enumera directorios de manera confiable para usar en scripts de shell y trabajos cron.

Si no puedes listar directorios eficientemente, siempre te sentirás desorientado — especialmente en un entorno remoto de Alojamiento VPS donde no hay un administrador de archivos gráfico en el que confiar.

Método 1: El comando ls — Rápido y simple

El comando ls es la herramienta predeterminada para mostrar el contenido de un directorio. Es el primer comando que aprenden la mayoría de los usuarios de Linux, y por una buena razón: es rápido, legible para humanos y está disponible en todos los sistemas similares a Unix.

Uso básico

ls

Esto lista todos los archivos y directorios no ocultos en el directorio de trabajo actual.

Listar solo directorios

ls -d */

Esto es lo que hace cada parte:

  • -d — Le dice a ls que no descienda en subdirectorios, sino que liste las entradas del directorio en sí.
  • */ — Un patrón glob de shell que coincide con todos los directorios (y enlaces simbólicos a directorios) en la carpeta actual.

Listar directorios con información detallada

ls -ld */

Agregar -l te da un formato de listado largo que incluye:

  • Permisos de archivo
  • Número de enlaces duros
  • Propietario y grupo
  • Tamaño del archivo
  • Marca de tiempo de última modificación

Ejemplo de salida:

drwxr-xr-x 3 root root 4096 Jun 10 14:22 backups/
drwxr-xr-x 5 www-data www-data 4096 Jun 12 09:15 html/
drwxr-xr-x 2 deploy deploy 4096 Jun 11 18:03 logs/

Limitación: Los directorios ocultos se excluyen

El glob */ no coincide con directorios ocultos — aquellos cuyos nombres comienzan con un punto (.), como .git/, .ssh/ o .config/. Esta es una advertencia importante, especialmente en entornos sensibles a la seguridad.

Cuándo usar ls -d */: Verificaciones rápidas e interactivas donde solo necesitas directorios visibles y no requieres confiabilidad de scripting.

Método 2: El comando find — Poderoso y confiable

El comando find es la opción del profesional para enumerar directorios. A diferencia de ls, está diseñado para uso programático, admite recorrido recursivo, incluye directorios ocultos de forma predeterminada y se comporta consistentemente en diferentes distribuciones de Linux y configuraciones regionales.

Listar todos los directorios recursivamente

find . -type d
  • . — Comienza desde el directorio actual.
  • -type d — Coincide solo con entradas de directorio (no archivos, enlaces simbólicos u otros tipos).

Esto listará recursivamente cada directorio en cada nivel de profundidad bajo tu ubicación actual.

Listar solo directorios de nivel superior (método portátil)

find . -mindepth 1 -maxdepth 1 -type d
  • -mindepth 1 — Excluye el directorio actual en sí (.) de los resultados.
  • -maxdepth 1 — Previene la recursión más allá de los hijos inmediatos.

Esta es la forma más portátil y confiable de listar solo los subdirectorios directos de la carpeta actual, y funciona de manera idéntica en sistemas GNU/Linux, macOS y BSD.

Alternativa para sistemas GNU/Linux

En la mayoría de las distribuciones modernas de Linux — incluyendo aquellas que se ejecutan en Servidores Dedicados — también puedes usar:

find . -maxdepth 1 -type d

Ten en cuenta que esto incluirá . en la salida. Usa -mindepth 1 junto con -maxdepth 1 para excluirlo limpiamente.

Incluir directorios ocultos

Debido a que find no se basa en globs de shell, incluye automáticamente directorios ocultos:

find . -mindepth 1 -maxdepth 1 -type d

Esto mostrará .git/, .ssh/, .config/ y cualquier otro directorio con prefijo de punto junto con los visibles.

Usar find en scripts

find es la herramienta correcta para scripting de shell porque:

  • Maneja nombres de archivo con espacios y caracteres especiales de manera segura.
  • No se ve afectado por configuraciones de configuración regional o de color de terminal.
  • Produce salida consistente y analizable.

Ejemplo: Bucle sobre todos los directorios de nivel superior

find . -mindepth 1 -maxdepth 1 -type d | while read -r dir; do
    echo "Processing: $dir"
done

Cuándo usar find: Cualquier vez que necesites directorios ocultos incluidos, resultados recursivos o salida confiable para scripting y automatización.

Método 3: El comando tree — Mapas visuales de directorios

El comando tree renderiza un mapa visual y jerárquico de tu estructura de directorios. No está instalado de forma predeterminada en todas las distribuciones pero es extremadamente útil para documentación, incorporación y comprensión de diseños de proyectos complejos.

Instalar tree

Debian/Ubuntu:

sudo apt install tree

CentOS/RHEL/AlmaLinux:

sudo yum install tree

Listar solo directorios (sin archivos)

tree -d

Limitar profundidad para evitar salida abrumadora

tree -d -L 2
  • -d — Mostrar solo directorios.
  • -L 2 — Limita la pantalla a 2 niveles de profundidad.

Ejemplo de salida:

.
├── backups
│   └── daily
├── html
│   ├── assets
│   └── uploads
└── logs

Incluir directorios ocultos

tree -d -a

Cuándo usar tree: Visualizar estructuras de proyectos, escribir documentación o explorar un diseño de servidor desconocido por primera vez.

Método 4: Por qué deberías evitar ls -l | grep "^d"

Ocasionalmente encontrarás este patrón sugerido en línea:

ls -l | grep "^d"

La idea es filtrar la salida de listado largo de ls para mostrar solo líneas que comienzan con d — lo que indica un directorio. Aunque esto parece ingenioso, es fundamentalmente frágil y debe evitarse en cualquier contexto serio:

ProblemaExplicación
Sensibilidad de configuración regionalAlgunas configuraciones regionales o configuraciones de terminal alteran el formato de salida de ls -l, rompiendo el patrón grep.
Códigos de colorSi ls genera códigos de escape ANSI de color, el patrón ^d puede no coincidir.
Directorios ocultosNo se muestran, al igual que con ls -d */.
Enlaces simbólicosLos enlaces simbólicos que apuntan a directorios se muestran como l, no d, por lo que se excluyen silenciosamente.
Confiabilidad de scriptingAnalizar la salida de ls en scripts se desaconseja explícitamente en las mejores prácticas de scripting de shell.

Usa find en su lugar. Está diseñado específicamente para esta tarea y evita todos los inconvenientes anteriores.

Referencia rápida: Elegir el método correcto

ObjetivoMejor comando
Verificación interactiva rápida (solo dirs visibles)ls -d */
Listado detallado con permisosls -ld */
Dirs de nivel superior incluyendo ocultosfind . -mindepth 1 -maxdepth 1 -type d
Todos los directorios recursivamentefind . -type d
Estructura de árbol visualtree -d
Usar en un script de shellfind . -mindepth 1 -maxdepth 1 -type d

Mejores prácticas para entornos de servidores de producción

Cuando trabajes en un servidor en vivo — ya sea una cuenta de Alojamiento Web Compartido o un VPS completamente administrado — ten en mente estos principios:

  1. Siempre verifica directorios ocultos durante auditorías de seguridad. Directorios como .ssh/, .git/, .env/ y .config/ a menudo contienen credenciales sensibles, claves y archivos de configuración. Usa find con -mindepth 1 para asegurar que aparezcan en tu salida.
  1. Usa find en todos los scripts, nunca ls. Analizar la salida de ls es un anti-patrón bien conocido en scripting de shell. El comando find es determinista, independiente de la configuración regional y maneja casos extremos con elegancia.
  1. Combina find con -exec para operaciones en masa. Por ejemplo, para listar tamaños de directorios:
   find . -mindepth 1 -maxdepth 1 -type d -exec du -sh {} ;
  1. Usa tree -d -L 2 cuando incorpores. Cuando SSH por primera vez en un servidor desconocido, un rápido tree -d -L 2 desde /var/www/ o /home/ te da una descripción general estructural instantánea.
  1. Restringe los permisos cuidadosamente. Saber qué directorios existen es solo parte de la imagen. Audita regularmente los permisos de directorio con ls -ld */ para detectar directorios mal configurados con permisos de escritura mundial.

Ejemplo práctico: Auditar un directorio de servidor web

Supongamos que acabas de desplegar una nueva aplicación en un VPS Linux. Aquí hay un flujo de trabajo práctico que combina los comandos cubiertos en esta gu

15%

Ahorra 15%<\/span> en todos los servicios de hosting

Pon a prueba tus habilidades y obtén Descuento<\/span> en cualquier plan de hosting

Usa el código:

Skills
Comenzar