Comando tree: Visualizando Estrutura de Diretorios

Comando tree: Visualizando Estrutura de Diretorios

O Que Voce Vai Aprender

  • Como entender uma estrutura de diretorios rapidamente com tree
  • Como limitar a profundidade com -L para que ate pastas enormes fiquem legiveis
  • Como filtrar a saida com -d, -a e -I
  • Como sair de chamadas repetidas de ls para uma unica visao estrutural

Para quem e: Iniciantes em Linux, e qualquer pessoa cansada de ls e cd para navegar pastas

Intro: O Momento "Perdida no ls" da Lina

Lina: Linny-senpai, eu queria verificar como uma pasta de projeto esta organizada, entao fico fazendo ls, depois cd, depois ls de novo... mas simplesmente nao consigo visualizar a estrutura toda.
Veterano Linny: Ah, o classico problema "perdida no ls". Mergulhar um nivel por vez e voltar faz voce perder o rumo de onde esta.
Lina: Exatamente! Eu quero desenhar isso no papel.
Veterano Linny: Esse "diagrama desenhado" e exatamente o que o comando tree te da de uma so vez. Ele mostra o conteudo de uma pasta como um diagrama em arvore. Vamos aprender hoje.

Resumo Rapido

  • tree = um comando que visualiza a estrutura de diretorios como uma arvore (diagrama ramificado)
  • Execute tree para o local atual, ou tree CAMINHO para apontar para um lugar especifico
  • Para pastas enormes, tree -L 2 (limitar profundidade) e tree -I 'node_modules' (excluir) sao essenciais

1. O Que E o tree?

Conclusao: tree exibe o conteudo de uma pasta como um diagrama ramificado, para que voce veja toda a hierarquia sem executar ls repetidamente.

Lina: Como o tree e diferente do ls?
Veterano Linny: ls lista apenas o conteudo de um local. tree desce por todos os niveis abaixo e mostra como um diagrama ramificado.
Lina: Entao e como executar ls automaticamente em cada pasta?
Veterano Linny: Essa e a ideia certa. E como as relacoes pai-filho sao desenhadas com linhas conectoras, voce ve instantaneamente em qual pasta um determinado arquivo de configuracao mora.

Veja como a saida se parece.

.
├── 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 nivel (└── e o ultimo item)
  • : uma linha vertical mostrando que o galho continua abaixo
  • Profundidade da indentacao = profundidade da hierarquia
  • Ultima linha: o numero total de diretorios e arquivos

2. Instalacao

Conclusao: tree frequentemente nao esta instalado por padrao. Instale com apt ou dnf.

Lina: Quero experimentar agora mesmo! Como instalo?
Veterano Linny: Em algumas distribuicoes ele nao vem pronto. Se tree imprimir "command not found", instale-o.
# Ubuntu / Debian
$ sudo apt install tree

# RHEL / Fedora
$ sudo dnf install tree

# macOS (Homebrew)
$ brew install tree

O nome do pacote e tree em toda distribuicao. Apos instalar, execute tree --version para confirmar a versao.

3. Uso Basico

Conclusao: Execute tree sem argumentos para mostrar o diretorio atual; use tree CAMINHO para apontar para um local especifico.

Veterano Linny: O uso e muito simples. Vamos comecar sem argumentos.

Mostrar o diretorio atual

# Mostrar o conteudo abaixo do seu local atual
$ tree

Apontar para um caminho especifico

# Mostrar um diretorio especifico
$ tree /etc

# Mostrar seu diretorio home
$ tree ~
Lina: So digitar tree imprimiu tudo ate o nivel mais profundo! ...Embora tenha rolado um pouco para fora da tela.
Veterano Linny: Certo, essa e a primeira armadilha. Por padrao, tree desce ate o nivel mais fundo. Entao executa-lo assim em uma pasta grande faz a tela rolar como uma cachoeira. Agora vamos aprender como controlar isso.

4. Limitar a Profundidade (-L)

Conclusao: Use tree -L NUMERO para limitar quantos niveis sao mostrados. Para pastas enormes, comece com -L 1 ou -L 2 para entender a visao geral.

Lina: Como faco para nao imprimir demais como antes?
Veterano Linny: Use -L (Level). -L 2 mostra apenas ate o segundo nivel. Isso permite ver rapidamente so a forma geral.
# 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 voce esta vendo 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 e um erro)
  • Use raso quando quiser um "mapa", mais fundo para detalhes de uma pasta especifica

5. Filtrar o Que E Mostrado

Conclusao: -d mostra apenas diretorios, -a inclui arquivos ocultos e -I exclui pastas indesejadas.

Veterano Linny: Apos a profundidade, o proximo passo e escolher o que mostrar. Domine isso e o tree se torna muito mais pratico.

Apenas diretorios (-d)

# Quando voce quer apenas a estrutura de pastas
$ tree -d -L 2
Lina: Parece util quando ha muitos arquivos e eu so quero o esqueleto de pastas!
Veterano Linny: Exatamente. -d (directory) esconde todo arquivo e mostra apenas o esqueleto de pastas. E otimo para explicar como um projeto esta organizado.

Incluir arquivos ocultos (-a)

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

tree esconde arquivos ocultos por padrao

Arquivos que comecam com um ponto (.), como .bashrc ou .git, nao sao mostrados a menos que voce adicione -a (all). Se um arquivo de configuracao parece estar faltando, verifique se voce 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, entao tree so rola para sempre, certo...
Veterano Linny: Esse mesmo! Entao -I (Ignore) e a correcao padrao. Separe padroes com | (pipe) para excluir varios. node_modules, .git e dist sao os suspeitos de sempre.

Inversamente, para ver "apenas esses", use -P

Quando voce quer mostrar apenas um certo padrao, use -P (Pattern). tree -P '*.js' mantem apenas arquivos .js. Se pastas vazias atrapalharem, adicione --prune para remover pastas que nao contem um arquivo correspondente.

6. Tornar Legivel e Mostrar Tamanhos

Conclusao: -F adiciona indicadores de tipo, -h --du mostra tamanhos acumulados de diretorios e -o ARQUIVO salva a saida em um arquivo.

Lina: Tem como adicionar um pouco mais de informacao?
Veterano Linny: Bastante. Mostrar tipos de arquivos e tamanhos junto com a arvore torna a investigacao muito mais facil.

Adicionar indicadores de tipo (-F)

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

Voce obtém os mesmos indicadores que ls -F. Um / no final significa uma pasta, e * marca um arquivo executavel rapidamente.

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

--du mostra o tamanho de cada diretorio como a soma dos arquivos abaixo dele (a mesma ideia do comando du). Combinado com -h (human readable), voce obtém unidades legiveis como 1.2K ou 3.4M. E util para uma nocao aproximada de qual pasta esta consumindo espaco.

Lina: Se mostra tamanhos, posso usar para uso de disco como ncdu?
Veterano Linny: Como um snapshot estatico, sim. Mas para investigacao interativa, descer com teclas de seta ou deletar na hora, ncdu e a melhor opcao. Pense no tree como "desenhar a estrutura" e ncdu como "cacar e liberar espaco."

Salvar o resultado em um arquivo (-o)

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

Ao adicionar uma secao "Estrutura de diretorios" a um README, cole a saida de tree -L 2 para um diagrama de layout instantaneo. Elimine ruido com -I antes de colar para um resultado limpo.

7. Mini Exercicios: Tente no Seu Proprio Ambiente

Conclusao: Tres tarefas (limite de profundidade, apenas diretorios, excluir) fixam as opcoes praticas do tree.

Veterano Linny: Para consolidar o que voce aprendeu, tente estes no seu proprio ambiente.

Tarefa 1: Execute tree -L 1 no seu diretorio home para ver o que esta diretamente abaixo dele.

Tarefa 2: Execute tree -d -L 2 ~ para mostrar apenas o esqueleto de pastas abaixo do seu home.

Tarefa 3: Em qualquer pasta de projeto, execute tree -I '.git' e confirme que .git foi excluido.

Dica para Tarefa 1
tree -L 1 ~

Limitando a um unico nivel com -L 1 lista apenas o conteudo direto como arvore, similar ao ls.

Dica para Tarefa 2
tree -d -L 2 ~

-d esconde arquivos e -L 2 limita a profundidade a dois niveis, entao apenas o esqueleto de pastas aparece.

Dica para Tarefa 3
tree -I '.git'

Escreva o nome a excluir apos -I. .git desaparece, deixando apenas a estrutura do codigo. Para excluir varios, separe com |, como '.git|node_modules'.

8. Armadilhas Comuns

Conclusao: Cuidado ao executar sem limite de profundidade em pastas grandes, esquecer arquivos ocultos e esquecer de colocar aspas no padrao de exclusao.

Tres erros frequentes

  1. Executar sem -L em uma pasta grande -> a tela rola como uma cachoeira com node_modules e afins. Comece com -L 1 ou -L 2.
  2. Entrar em panico quando arquivos ocultos nao aparecem -> tree esconde entradas com prefixo ponto por padrao. Verifique se voce esqueceu o -a.
  3. Esquecer de colocar aspas no padrao de exclusao -> sem aspas simples, como em -I node_modules|.git, o shell interpreta | como pipe e voce obtém comportamento inesperado. A forma correta e -I 'node_modules|.git'.

Padroes seguros e praticos

  • Primeiro olhar em uma pasta: tree -L 2 (visao geral rasa)
  • Explicando um layout: tree -d -L 2 (apenas esqueleto)
  • Navegando um repositorio: tree -L 2 -I 'node_modules|.git|dist' (remover o ruido)

Proximas Leituras