Poupe 15% em todos os serviços de alojamento

Teste as suas habilidades e obtenha Desconto em qualquer plano

Utilizar o código: Skills Começar a trabalhar
Secções
Linux

Como Listar Diretórios no Linux: Um Guia Completo para Iniciantes e Administradores de Sistema

Trabalhar em Linux muitas vezes parece navegar numa vasta biblioteca. Em vez de prateleiras, tem diretórios (pastas), e em vez de livros, tem ficheiros. Quer seja um administrador de sistemas experiente, um programador ou um iniciante curioso apenas a começar, dominar os fundamentos da navegação do sistema de ficheiros é inegociável. Uma das competências fundamentais mais críticas é saber como listar diretórios de forma eficiente e precisa.

Este guia leva-o através de todos os métodos práticos para listar diretórios em Linux, explica os pontos fortes e limitações de cada abordagem, e mostra-lhe exatamente quando usar qual ferramenta — incluindo em ambientes de scripting e servidores de produção.

Por Que Listar Diretórios é Importante

Em um computador pessoal, você pode ocasionalmente navegar pela pasta "Documentos" ou "Downloads" através de uma interface gráfica. Em um servidor Linux, no entanto, os diretórios estão no coração de quase todas as tarefas administrativas que você realizará:

  • Administração de sistemas: Audite rapidamente o que existe em /etc/, /var/log/ ou /usr/local/bin/.
  • Hospedagem web: Localize e gerencie pastas de projetos em /var/www/ ou /home/.
  • Desenvolvimento de software: Identifique diretórios de controle de versão e ambiente, como .git/ ou .venv/.
  • Auditoria de segurança: Confirme exatamente o que está instalado, configurado e em execução no sistema.
  • Automação e scripting: Enumere diretórios de forma confiável para uso em scripts shell e trabalhos cron.

Se você não conseguir listar diretórios com eficiência, sempre se sentirá desorientado — especialmente em um ambiente remoto de Hospedagem VPS onde não há gerenciador de arquivos gráfico para recorrer.

Método 1: O Comando ls — Rápido e Simples

O comando ls é a ferramenta padrão para exibir o conteúdo de um diretório. É o primeiro comando que a maioria dos utilizadores Linux aprende, e com razão: é rápido, legível para humanos e disponível em todos os sistemas tipo Unix.

Utilização básica

ls

Isto lista todos os ficheiros e diretórios não ocultos no diretório de trabalho atual.

Listar apenas diretórios

ls -d */

Eis o que cada parte faz:

  • -d — Diz ao ls para não descer em subdiretórios, mas para listar as entradas do diretório em si.
  • */ — Um padrão glob de shell que corresponde a todos os diretórios (e ligações simbólicas para diretórios) na pasta atual.

Listar diretórios com informações detalhadas

ls -ld */

Adicionar -l dá-lhe um formato de listagem longa que inclui:

  • Permissões de ficheiro
  • Número de ligações rígidas
  • Proprietário e grupo
  • Tamanho do ficheiro
  • Marca de tempo da última modificação

Exemplo de saída:

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/

Limitação: Diretórios ocultos são excluídos

O padrão glob */ não corresponde a diretórios ocultos — aqueles cujos nomes começam com um ponto (.), como .git/, .ssh/ ou .config/. Esta é uma ressalva importante, especialmente em ambientes sensíveis à segurança.

Quando usar ls -d */: Verificações rápidas e interativas onde só precisa de diretórios visíveis e não requer fiabilidade de scripting.

Método 2: O Comando find — Poderoso e Confiável

O comando find é a escolha do profissional para enumerar diretórios. Ao contrário de ls, foi projetado para uso programático, suporta travessia recursiva, inclui diretórios ocultos por padrão e comporta-se consistentemente em diferentes distribuições Linux e locales.

Listar todos os diretórios recursivamente

find . -type d
  • . — Começar a partir do diretório atual.
  • -type d — Corresponder apenas a entradas de diretório (não arquivos, symlinks ou outros tipos).

Isto listará recursivamente todos os diretórios em cada nível de profundidade abaixo da sua localização atual.

Listar apenas diretórios de nível superior (método portável)

find . -mindepth 1 -maxdepth 1 -type d
  • -mindepth 1 — Exclui o próprio diretório atual (.) dos resultados.
  • -maxdepth 1 — Impede recursão além dos filhos imediatos.

Esta é a forma mais portável e confiável de listar apenas os subdiretórios diretos da pasta atual, e funciona de forma idêntica em sistemas GNU/Linux, macOS e BSD.

Alternativa para sistemas GNU/Linux

Na maioria das distribuições Linux modernas — incluindo aquelas em execução em Servidores Dedicados — você também pode usar:

find . -maxdepth 1 -type d

Note que isto incluirá . na saída. Use -mindepth 1 juntamente com -maxdepth 1 para excluí-lo de forma limpa.

Incluir diretórios ocultos

Como find não depende de globs de shell, inclui automaticamente diretórios ocultos:

find . -mindepth 1 -maxdepth 1 -type d

Isto mostrará .git/, .ssh/, .config/ e qualquer outro diretório com prefixo de ponto juntamente com os visíveis.

Usar find em scripts

find é a ferramenta correta para scripts de shell porque:

  • Trata nomes de arquivo com espaços e caracteres especiais com segurança.
  • Não é afetado por configurações de locale ou configurações de cor do terminal.
  • Produz saída consistente e analisável.

Exemplo: Fazer loop sobre todos os diretórios de nível superior

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

Quando usar find: Sempre que você precisar de diretórios ocultos incluídos, resultados recursivos ou saída confiável para scripts e automação.

Método 3: O Comando tree — Mapas Visuais de Diretórios

O comando tree renderiza um mapa visual e hierárquico da sua estrutura de diretórios. Não é instalado por padrão em todas as distribuições, mas é extremamente útil para documentação, integração de novos membros e compreensão de layouts de projetos complexos.

Instalar tree

Debian/Ubuntu:

sudo apt install tree

CentOS/RHEL/AlmaLinux:

sudo yum install tree

Listar apenas diretórios (sem ficheiros)

tree -d

Limitar profundidade para evitar saída esmagadora

tree -d -L 2
  • -d — Mostrar apenas diretórios.
  • -L 2 — Limitar a exibição a 2 níveis de profundidade.

Exemplo de saída:

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

Incluir diretórios ocultos

tree -d -a

Quando usar tree: Visualizar estruturas de projetos, escrever documentação ou explorar um layout de servidor desconhecido pela primeira vez.

Método 4: Por que você deve evitar ls -l | grep "^d"

Você ocasionalmente encontrará este padrão sugerido online:

ls -l | grep "^d"

A ideia é filtrar a saída de listagem longa de ls para mostrar apenas linhas começando com d — o que indica um diretório. Embora isso pareça inteligente, é fundamentalmente frágil e deve ser evitado em qualquer contexto sério:

ProblemaExplicação
Sensibilidade de localidadeAlgumas localizações ou configurações de terminal alteram o formato de saída de ls -l, quebrando o padrão grep.
Códigos de corSe ls produz códigos de escape ANSI de cor, o padrão ^d pode falhar na correspondência.
Diretórios ocultosNão mostrados, assim como com ls -d */.
Links simbólicosLinks simbólicos apontando para diretórios aparecem como l, não d, portanto são silenciosamente excluídos.
Confiabilidade de scriptsAnalisar a saída de ls em scripts é explicitamente desencorajado nas melhores práticas de shell scripting.

Use find em vez disso. Foi construído especificamente para esta tarefa e evita todos os problemas acima.

Referência Rápida: Escolher o Método Correto

ObjetivoMelhor Comando
Verificação interativa rápida (apenas diretórios visíveis)ls -d */
Listagem detalhada com permissõesls -ld */
Diretórios de nível superior incluindo ocultosfind . -mindepth 1 -maxdepth 1 -type d
Todos os diretórios recursivamentefind . -type d
Estrutura de árvore visualtree -d
Usar num script shellfind . -mindepth 1 -maxdepth 1 -type d

Melhores Práticas para Ambientes de Servidor de Produção

Ao trabalhar em um servidor ativo — seja uma conta de Shared Web Hosting ou um VPS totalmente gerenciado — tenha estes princípios em mente:

  1. Sempre verifique diretórios ocultos durante auditorias de segurança. Diretórios como .ssh/, .git/, .env/ e .config/ frequentemente contêm credenciais sensíveis, chaves e arquivos de configuração. Use find com -mindepth 1 para garantir que apareçam na sua saída.
  1. Use find em todos os scripts, nunca ls. Analisar a saída de ls é um anti-padrão bem conhecido em shell scripting. O comando find é determinístico, independente de localidade e lida com casos extremos com elegância.
  1. Combine find com -exec para operações em massa. Por exemplo, para listar tamanhos de diretórios:
   find . -mindepth 1 -maxdepth 1 -type d -exec du -sh {} ;
  1. Use tree -d -L 2 ao integrar. Quando você faz SSH pela primeira vez em um servidor desconhecido, um tree -d -L 2 rápido de /var/www/ ou /home/ oferece uma visão geral estrutural instantânea.
  1. Restrinja permissões com cuidado. Saber quais diretórios existem é apenas parte do quadro. Audite regularmente permissões de diretório com ls -ld */ para detectar diretórios mal configurados com permissão de escrita para todos.

Exemplo Prático: Auditoria de um Diretório de Servidor Web

Suponha que acabou de implementar uma nova aplicação num VPS Linux. Aqui está um fluxo de trabalho prático que combina os comandos abordados neste guia:

# Navigate to the web root
cd /var/www/

# Quick visual check of top-level directories
ls -ld */

# Full audit including hidden directories
find . -mindepth 1 -maxdepth 1 -type d

# Visual map of the project structure (2 levels deep)
tree -d -L 2

# Check disk usage per directory
find . -mindepth 1 -maxdepth 1 -type d -exec du -sh {} ;

Este fluxo de trabalho leva menos de um minuto e oferece uma visão completa do layout do diretório do seu servidor web, permissões e consumo de disco — conhecimento essencial para qualquer administrador que gere um VPS com cPanel ou uma stack Linux personalizada.

Conclusão

Listar diretórios é uma das habilidades Linux mais fundamentais, mas o método que você escolhe importa mais do que a maioria dos iniciantes percebe. Aqui está um resumo dos principais pontos:

  • ls -d */ é perfeito para verificações rápidas e interativas — mas ignora diretórios ocultos e não é adequado para scripts.
  • find . -mindepth 1 -maxdepth 1 -type d é o padrão ouro para listagem de diretórios confiável, portável e segura para scripts que inclui entradas ocultas.
  • tree -d é inestimável para visualizar estruturas complexas e comunicá-las a outros.
  • Evite ls -l | grep "^d" — é frágil, dependente de localidade e não tem vantagens sobre find.

Quer você esteja gerenciando configurações em um ambiente de Dedicated Servers, implantando aplicações web ou simplesmente explorando uma nova máquina Linux pela primeira vez, dominar esses comandos economizará seu tempo, evitará erros custosos e lhe dará a confiança para navegar em qualquer sistema de arquivos com precisão.

A linha de comando não é uma barreira — é um superpoder. E tudo começa sabendo exatamente onde você está e o que o rodeia.