Comando tree: Visualizando Estrutura de Diretórios

Comando tree: Visualizando Estrutura de Diretórios

O que você vai conseguir fazer

  • Mostrar a estrutura de diretórios como um diagrama ramificado com `tree`
  • Limitar a profundidade com `-L` para que até uma pasta enorme fique legível
  • Combinar `-d`, `-a` e `-I` para filtrar a saída só no que você precisa

Pré-requisitos (leia estes primeiro)

O Que Você Vai Aprender

  • Como entender uma estrutura de diretórios rapidamente com tree
  • Como limitar a profundidade com -L para que até pastas enormes fiquem legíveis
  • Como filtrar a saída com -d, -a e -I
  • Como sair de chamadas repetidas de ls para uma única visão estrutural

Para quem é: Iniciantes em Linux. Quem está cansada de usar ls e cd para navegar entre pastas.

As palavras deste artigo

O tree apenas exibe informação. Ele nunca apaga nem reescreve um arquivo, então rodar não muda nada nas suas pastas.

Intro: O Momento "Perdida no ls" da Lina

Lina: Linny-senpai, eu queria verificar como uma pasta de projeto está organizada.
Lina: Então fico fazendo ls, depois cd, depois ls de novo. Mesmo assim não consigo visualizar a estrutura toda.
Veterano Linny: Esse é o clássico problema "perdida no ls". Mergulhar um nível por vez e voltar faz você perder o rumo.
Lina: Exatamente. Eu quero desenhar isso no papel.
Veterano Linny: Esse diagrama desenhado é o que o comando tree te dá de uma só vez. Ele mostra o conteúdo de uma pasta como um diagrama ramificado.

Resumo Rápido

  • tree = um comando que visualiza a estrutura de diretórios como uma árvore (diagrama ramificado)
  • Execute tree para o local atual, ou tree CAMINHO para apontar para um lugar específico
  • Para pastas enormes, tree -L 2 (limitar profundidade) e tree -I 'node_modules' (excluir) são essenciais

1. O Que É o tree?

Conclusão: tree exibe o conteúdo de uma pasta como um diagrama ramificado, para que você veja toda a hierarquia sem executar ls repetidamente.

Lina: Como o tree é diferente do ls?
Veterano Linny: O ls lista apenas o conteúdo de um local. O tree desce por todos os níveis abaixo e mostra tudo como um diagrama ramificado.
Lina: Então é como executar ls automaticamente em cada pasta?
Veterano Linny: Essa é a ideia certa. E as relações pai-filho aparecem desenhadas com linhas.
Veterano Linny: Assim você vê na hora em qual pasta um determinado arquivo de configuração mora.

Veja como fica a saída.

.
├── README.md
├── src
│   ├── index.js
│   └── utils
│       └── format.js
└── tests
    └── index.test.js

3 directories, 4 files

Como ler o diagrama

  • ├── / └──: um arquivo ou pasta naquele nível. O └── marca o último item
  • : uma linha vertical mostrando que o galho continua abaixo
  • Profundidade do recuo: ela corresponde direto à profundidade da hierarquia
  • Última linha: o número total de diretórios e arquivos

2. Instalação

Conclusão: tree frequentemente não está instalado por padrão. Instale com apt ou dnf.

Lina: Quero experimentar agora mesmo. Como instalo?
Veterano Linny: Em algumas distribuições ele não vem pronto.
Veterano Linny: Se o tree imprimir "command not found", instale.
# Ubuntu / Debian
$ sudo apt install tree

# RHEL / Fedora
$ sudo dnf install tree

# macOS (Homebrew)
$ brew install tree

O nome do pacote é tree em toda distribuição. Quando a instalação terminar, execute tree --version para confirmar.

3. Uso Básico

Conclusão: Execute tree sem argumentos para mostrar o diretório atual; use tree CAMINHO para apontar para um local específico.

Veterano Linny: O uso é muito simples. Vamos começar executando sem argumentos.

Mostrar o diretório atual

# Mostrar o conteudo abaixo do seu local atual
$ tree

Apontar para um caminho específico

# Mostrar um diretorio especifico
$ tree /etc

# Mostrar seu diretorio home
$ tree ~
Lina: Só digitar tree imprimiu tudo até o nível mais profundo.

Lina se enrola: a tela não parava de rolar

Lina: Rodei tree na pasta do meu projeto. A tela rolou como uma cachoeira e só sobrou a última linha.
$ tree
(dezenas de milhares de linhas passam correndo)

12043 directories, 98217 files
Lina: Mais de 98 mil arquivos? Meu projeto não é tão grande. Quebrou alguma coisa?
Veterano Linny: Nada quebrou. Por padrão, o tree desce até o nível mais fundo.
Veterano Linny: Então uma pasta enorme como node_modules sai inteira, item por item.
Lina: Eu só queria ver os arquivos que escrevi. Quase toda aquela contagem era de bibliotecas.
Veterano Linny: Isso. Então limite a profundidade com -L e tire as pastas desnecessárias com -I. Esses dois deixam a saída legível.
Lina: Faz sentido. Vou começar com -L 2 e descer a partir dali.
$ tree -L 2 -I 'node_modules|.git'

Se a saída passou correndo, escreva tree | less. Ele mostra uma tela por vez. Dentro do less, use as setas para andar e q para sair.

4. Limitar a Profundidade (-L)

Conclusão: Use tree -L NUMERO para limitar quantos níveis são mostrados. Para pastas enormes, comece com -L 1 ou -L 2 para entender a visão geral.

Lina: Como faço para não imprimir demais, como antes?
Veterano Linny: Use -L (Level). O -L 2 mostra apenas até o segundo nível.
Veterano Linny: Assim você vê a forma geral num instante.
# Apenas um nivel (conteudo direto, parecido com ls)
$ tree -L 1

# Ate dois niveis
$ tree -L 2 /var/log
/var/log
├── apt
│   ├── history.log
│   └── term.log
├── journal
├── syslog
└── dpkg.log

2 directories, 4 files

Quando usar -L

  • Para uma pasta que você vê pela primeira vez, aprofunde do raso para o fundo: tree -L 1, depois -L 2
  • Especifique a profundidade como um inteiro de 1 ou mais (-L 0 dá erro)
  • Use raso quando quiser um mapa. Vá mais fundo quando quiser os detalhes de uma pasta

5. Filtrar o Que É Mostrado

Conclusão: -d mostra apenas diretórios, -a inclui arquivos ocultos e -I exclui pastas indesejadas.

Veterano Linny: Depois da profundidade, o próximo passo é escolher o que mostrar. Domine isso e o tree fica muito mais prático.

Apenas diretórios (-d)

# Quando voce quer apenas a estrutura de pastas
$ tree -d -L 2
Lina: Parece útil quando há muitos arquivos e eu só quero o esqueleto de pastas.
Veterano Linny: Exatamente. O -d (directory) esconde todos os arquivos e mostra apenas o esqueleto de pastas.
Veterano Linny: Isso ajuda muito quando você explica como um projeto está organizado.

Incluir arquivos ocultos (-a)

# Mostrar entradas com prefixo ponto como .git e .env tambem
$ tree -a -L 1

tree esconde arquivos ocultos por padrão

Arquivos que começam com um ponto (.), como .bashrc ou .git, só aparecem se você adicionar -a (all).

Se um arquivo de configuração parece estar faltando, verifique se você esqueceu o -a.

Excluir pastas indesejadas (-I)

# Excluir node_modules da saida
$ tree -I 'node_modules'

# Excluir varios, separados por |
$ tree -I 'node_modules|.git|dist'
Lina: node_modules tem dezenas de milhares de arquivos. Foi isso que inundou a minha tela há pouco.
Veterano Linny: Isso. Então o -I (Ignore) é a correção padrão.
Veterano Linny: Separe os padrões com | (pipe) para excluir vários de uma vez. node_modules, .git e dist são os suspeitos de sempre.

Ao contrário, para ver apenas certos arquivos, use -P

Quando você quer mostrar apenas um padrão, use -P (Pattern). Escrever tree -P '*.js' mantém só os arquivos .js.

Se pastas vazias atrapalharem, adicione --prune. Ele remove as pastas que não contêm nenhum arquivo correspondente.

6. Tornar Legível e Mostrar Tamanhos

Conclusão: -F adiciona indicadores de tipo, -h --du mostra tamanhos acumulados de diretórios e -o ARQUIVO salva a saída em um arquivo.

Lina: Tem como adicionar um pouco mais de informação?
Veterano Linny: Tem. Mostrar tipos de arquivo e tamanhos junto com a árvore deixa a investigação bem mais fácil.

Adicionar indicadores de tipo (-F)

# Adicionar / a diretorios e * a executaveis
$ tree -F -L 1

Você obtém os mesmos indicadores do ls -F. Um / no final significa pasta e um * marca arquivo executável. Dá para distinguir de relance.

Mostrar tamanhos (-h / --du)

# Mostrar o tamanho de cada arquivo em unidades legíveis
$ tree -h

# Tambem mostrar tamanhos de diretorios (acumulados)
$ tree -h --du -L 1

O que --du significa

O --du mostra o tamanho de cada diretório como a soma dos arquivos abaixo dele. É a mesma ideia do comando du.

Combinado com -h (human readable), você obtém unidades legíveis como 1.2K ou 3.4M. É útil para ter uma noção aproximada de qual pasta está consumindo espaço.

Lina: Se mostra tamanhos, posso usar para uso de disco como o ncdu?
Veterano Linny: Como registro de um momento, sim. Mas você não consegue descer com as setas nem deletar na hora.
Veterano Linny: Para esse trabalho interativo, o ncdu é a melhor opção. Pense no tree como a ferramenta que desenha a estrutura e no ncdu como a que caça e libera espaço.

Salvar o resultado em um arquivo (-o)

# Escrever a arvore em um arquivo de texto
$ tree -L 2 -o structure.txt

Isso ajuda quando você adiciona uma seção "Estrutura de diretórios" a um README. Cole a saída de tree -L 2 e o diagrama fica pronto na hora.

Elimine o ruído com -I antes de colar para um resultado limpo.

Note que o -o cria o arquivo indicado e escreve o resultado nele. Se já existir um arquivo com esse nome, o conteúdo dele é substituído. Rode ls antes para checar se há um arquivo de mesmo nome.

7. Mini Exercícios: Tente no Seu Próprio Ambiente

Conclusão: Três tarefas (limite de profundidade, apenas diretórios, excluir) fixam as opções práticas do tree.

Lina: O conteúdo entrou. Quero testar na mão.
Veterano Linny: Boa, preparei três desafios. O tree só exibe coisas, então você pode rodar quantas vezes quiser.

Desafio 1: Mostre o que está logo abaixo do seu diretório home, com um nível apenas.

Ver Dica 1 (Direcionamento)

Use a opção que limita a profundidade. Você quer o conteúdo direto, então escolha o valor mais raso.

A palavra "Level" é a pista.

Ver Dica 2 (Nome do comando)

Use tree. Escreva -L seguido do número, que aqui é 1.

O seu home pode ser escrito como ~.

Ver Resposta
$ tree -L 1 ~
/home/user
├── Documents
├── Downloads
├── Videos
└── notes.txt

3 directories, 1 file

Limitar com -L 1 cobre o mesmo alcance do ls, desenhado como árvore.

Desafio 2: Mostre apenas o esqueleto de pastas abaixo do seu home, até dois níveis. Sem arquivos.

Ver Dica 1 (Direcionamento)

Combine duas opções. Uma limita a profundidade. A outra esconde os arquivos.

Para a segunda, a palavra "directory" é a pista.

Ver Dica 2 (Nome do comando)

A profundidade é -L 2. Somente diretórios é -d. As duas vão depois de tree, lado a lado.

Ver Resposta
$ tree -d -L 2 ~
/home/user
├── Documents
│   └── work
├── Downloads
└── Videos

4 directories

O -d tira os arquivos e o -L 2 mantém a profundidade em dois níveis. Até a última linha conta só diretórios.

Desafio 3: Em uma pasta de projeto, exclua o .git da saída e confirme que ele sumiu.

Ver Dica 1 (Direcionamento)

Informe ao comando o nome da pasta que você não quer ver. Essa opção é diferente do limite de profundidade.

A palavra "Ignore" é a pista.

Ver Dica 2 (Nome do comando)

Use tree -I. Escreva o nome a excluir depois do -I, entre aspas.

Sem as aspas, o shell lê o | como um pipe.

Ver Resposta
$ tree -a -L 1 -I '.git'
.
├── README.md
├── src
└── tests

2 directories, 1 file

Mesmo com -a, o .git não aparece. Essa é a prova de que a exclusão funcionou.

Para excluir vários, separe com |, como em '.git|node_modules'.

8. Armadilhas Comuns

Conclusão: Cuidado ao executar sem limite de profundidade em pastas grandes, esquecer arquivos ocultos e esquecer de colocar aspas no padrão de exclusão.

Três erros frequentes

  1. Executar sem -L em uma pasta grande -> a tela rola como uma cachoeira. Comece com -L 1 ou -L 2
  2. Entrar em pânico quando arquivos ocultos não aparecem -> o tree esconde entradas com ponto por padrão. Cheque se esqueceu o -a
  3. Esquecer as aspas no padrão de exclusão -> o shell lê o | como pipe. Escreva -I 'node_modules|.git'

Padrões seguros e práticos

  • Primeiro olhar em uma pasta: tree -L 2 (visão geral rasa)
  • Explicando um layout: tree -d -L 2 (apenas o esqueleto)
  • Navegando um repositório: tree -L 2 -I 'node_modules|.git|dist' (remove o ruído)

9. Revisão

Lina: Vou resumir. Diferente do ls, o tree percorre os níveis abaixo e desenha tudo como um diagrama.
Veterano Linny: Isso. Por isso, no padrão, ele inunda a tela numa pasta enorme.
Lina: Então eu paro a profundidade com -L e tiro as pastas indesejadas com -I.
Veterano Linny: Boa memória. Numa pasta que você nunca viu, comece com -L 2. Só esse passo já deixa a saída legível.

Resumo em 3 Linhas

  1. O tree desenha a estrutura de diretórios como um diagrama ramificado e substitui várias chamadas de ls
  2. O -L NUMERO limita a profundidade. Comece com -L 2 numa pasta que você vê pela primeira vez
  3. O -d mostra só pastas, o -a inclui arquivos ocultos e o -I 'PADRAO' exclui o que você não precisa

Próximas Leituras