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
lsEsto 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 alsque 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 dTen 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 dEsto 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"
doneCuá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 treeCentOS/RHEL/AlmaLinux:
sudo yum install treeListar solo directorios (sin archivos)
tree -dLimitar 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
└── logsIncluir directorios ocultos
tree -d -aCuá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:
| Problema | Explicación |
|---|---|
| Sensibilidad de configuración regional | Algunas configuraciones regionales o configuraciones de terminal alteran el formato de salida de ls -l, rompiendo el patrón grep. |
| Códigos de color | Si ls genera códigos de escape ANSI de color, el patrón ^d puede no coincidir. |
| Directorios ocultos | No se muestran, al igual que con ls -d */. |
| Enlaces simbólicos | Los enlaces simbólicos que apuntan a directorios se muestran como l, no d, por lo que se excluyen silenciosamente. |
| Confiabilidad de scripting | Analizar 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
| Objetivo | Mejor comando |
|---|---|
| Verificación interactiva rápida (solo dirs visibles) | ls -d */ |
| Listado detallado con permisos | ls -ld */ |
| Dirs de nivel superior incluyendo ocultos | find . -mindepth 1 -maxdepth 1 -type d |
| Todos los directorios recursivamente | find . -type d |
| Estructura de árbol visual | tree -d |
| Usar en un script de shell | find . -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:
- 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. Usafindcon-mindepth 1para asegurar que aparezcan en tu salida.
- Usa
finden todos los scripts, nuncals. Analizar la salida delses un anti-patrón bien conocido en scripting de shell. El comandofindes determinista, independiente de la configuración regional y maneja casos extremos con elegancia.
- Combina
findcon-execpara operaciones en masa. Por ejemplo, para listar tamaños de directorios:
find . -mindepth 1 -maxdepth 1 -type d -exec du -sh {} ;- Usa
tree -d -L 2cuando incorpores. Cuando SSH por primera vez en un servidor desconocido, un rápidotree -d -L 2desde/var/www/o/home/te da una descripción general estructural instantánea.
- 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
