15%

Poupe 15% em todos os serviços

Teste as suas habilidades e obtenha Desconto em qualquer plano

Utilizar o código:

Skills
Começar a trabalhar
02.09.2025

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 cada método prático 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 scripts e ambientes de servidores de produção.

Por que Listar Diretórios é Importante

Num computador pessoal, pode ocasionalmente navegar pela sua pasta “Documentos” ou “Transferências” através de uma interface gráfica. Num servidor Linux, porém, os diretórios estão no coração de quase todas as tarefas administrativas que realizará:

  • Administração de sistemas: Auditar rapidamente o que existe em /etc/, /var/log/ ou /usr/local/bin/.
  • Alojamento web: Localizar e gerir pastas de projetos em /var/www/ ou /home/.
  • Desenvolvimento de software: Identificar diretórios de controlo de versão e ambiente como .git/ ou .venv/.
  • Auditoria de segurança: Confirmar exatamente o que está instalado, configurado e em execução no sistema.
  • Automação e scripting: Enumerar diretórios de forma fiável para uso em scripts shell e tarefas cron.

Se não conseguir listar diretórios de forma eficiente, sempre se sentirá desorientado — especialmente num ambiente remoto de Alojamento VPS onde não há gestor de ficheiros 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 de Linux aprende, e com razão: é rápido, legível por 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 próprias entradas de diretório.
  • */ — Um padrão glob 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 físicas
  • 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 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 confiabilidade de scripting.

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

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

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 ficheiros, symlinks ou outros tipos).

Isto listará recursivamente cada diretório 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 diretório atual (.) dos resultados.
  • -maxdepth 1 — Impede recursão além dos filhos imediatos.

Esta é a forma mais portável e fiá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 — também pode usar:

find . -maxdepth 1 -type d

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

Incluir diretórios ocultos

Porque find não depende de globs 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 scripting shell porque:

  • Trata nomes de ficheiros com espaços e caracteres especiais de forma segura.
  • Não é afetada por configurações de local 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 precise de diretórios ocultos incluídos, resultados recursivos ou saída fiável para scripting e automação.

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

O comando tree renderiza um mapa visual e hierárquico da sua estrutura de diretório. Não está instalado por padrão em todas as distribuições, mas é extremamente útil para documentação, integração 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 Deve Evitar ls -l | grep "^d"

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 — que indica um diretório. Embora isto pareça inteligente, é fundamentalmente frágil e deve ser evitado em qualquer contexto sério:

ProblemaExplicação
Sensibilidade a locaisAlguns locais 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 não corresponder.
Diretórios ocultosNão mostrados, tal como com ls -d */.
Ligações simbólicasSymlinks apontando para diretórios mostram como l, não d, portanto são silenciosamente excluídos.
Confiabilidade de scriptingAnalisar saída de ls em scripts é explicitamente desaconselhado nas melhores práticas de scripting shell.

Use find em vez disso. Foi concebido 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 dirs visíveis)ls -d */
Listagem detalhada com permissõesls -ld */
Dirs 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 Servidores de Produção

Ao trabalhar num servidor ativo — quer seja uma conta de Alojamento Web Partilhado ou um VPS totalmente gerido — mantenha 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 ficheiros de configuração. Use find com -mindepth 1 para garantir que aparecem na sua saída.
  1. Use find em todos os scripts, nunca ls. Analisar saída de ls é um anti-padrão bem conhecido em scripting shell. O comando find é determinístico, independente de local e trata casos extremos com elegância.
  1. Combine find com -exec para operações em massa. Por exemplo, para listar tamanhos de diretório:
   find . -mindepth 1 -maxdepth 1 -type d -exec du -sh {} ;
  1. Use tree -d -L 2 ao integrar. Quando SSH pela primeira vez num servidor desconhecido, um tree -d -L 2 rápido a partir de /var/www/ ou /home/ dá-lhe uma visão geral estrutural instantânea.
  1. Restrinja permissões com cuidado. Saber quais diretórios existem é apenas parte da imagem. Audite regularmente permissões de diretório com ls -ld */ para apanhar diretórios acessíveis ao mundo mal configurados.

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

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

15%

Poupe 15% em todos os serviços

Teste as suas habilidades e obtenha Desconto em qualquer plano

Utilizar o código:

Skills
Começar a trabalhar