Como representar a estrutura de diretórios e arquivos em texto (Markdown)

Fala galera, a dica de hoje é simples e vai ajudar outros blogueiros e developers de plantão.

Enquanto escrevia meu tutorial de Elixir, surgiu a necessidade de listar todos os arquivos criados por um certo comando. Eu não queria ter que digitar todos os diretórios, arquivos, subdiretórios na mão. E o comando tree foi quem me salvou.

Então, para representar diretórios, com seus subdiretórios e arquivos desta forma

.
├── lib
│   └── blackjack.ex
├── mix.exs
├── README.md
└── test
    ├── blackjack_test.exs
    └── test_helper.exs

você precisa navegar pelo terminal até diretório raiz do seu projeto e tacar o comando

$ tree

O comando tree (árvore, traduzindo para o português) retorna uma representação textual do diretório, isto é, sua árvore de arquivos e subdiretórios. Depois é só copiar e colar onde você quiser.

Explorando o comando tree

Se você quiser listar os arquivos ocultos, pode incluir a opção -a.

$ tree -a
.
├── .formatter.exs
├── .gitignore
├── lib
│   └── blackjack.ex
├── mix.exs
├── README.md
└── test
    ├── blackjack_test.exs
    └── test_helper.exs

Você pode também usar o tree sem navegar até o diretório:

tree /path/to/dir/ -a

Já a opção -f inclui todo o caminho relativo no nome dos arquivos. Isto pode ser útil para listar projetos muito grandes.

tree -fa
.
├── ./.formatter.exs
├── ./.gitignore
├── ./lib
│   └── ./lib/blackjack.ex
├── ./mix.exs
├── ./README.md
└── ./test
    ├── ./test/blackjack_test.exs
    └── ./test/test_helper.exs

Dica para Markdown

Se você usa Markdown, como eu, você pode envolver o retorno do comando tree entre "```", para o estilo bonitão ficar igual ao de código.

```shell
  $ tree
  .
  ├── lib
  │   └── blackjack.ex
  ├── mix.exs
  ├── README.md
  └── test
      ├── blackjack_test.exs
      └── test_helper.exs
```

Isto fará com que ele seja envolvido entre uma tag pre e preservará os espaços e quebras de linha.

Por hoje é só, folks. ;*