Eu usaria tree
.
$ tree -d /usr|head -n 12 /usr |-- X11R6 | '-- lib | '-- X11 | '-- wily |-- bin | '-- X11 -> . |-- games |-- i586-mingw32msvc | |-- bin | |-- include | | |-- GL
tudo. Eu estou procurando uma maneira rápida e suja para gerar alguns diagramas de alguns diretórios que têm quase, mas não exatamente, a mesma hierarquia, para que eu possa mostrá-los em uma reunião e podemos decidir qual sabor gostamos mais. Eu não estou interessado nos nós "leaf", apenas nos diretórios.
O problema: não quero mexer com o X. Este é um sistema de servidores com o qual lidei inteiramente através do SSH. Então, estou procurando algo que faça layout ASCII, talvez com hífens e canos simples para linhas ou algo assim.
Alguém sabe de tal utilidade? Tenho certeza de que poderia escrever algo, mas é um tipo de projeto tão complicado, com espaçamento e layout de manuseio e tal; Eu realmente gostaria de descobrir que alguém fez isso por mim. Infelizmente, o Google parece não saber de tal coisa ... ou, se o fizer, está escondido sob montes de excelentes explicações visuais da hierarquia de arquivos padrão do Unix. Obrigado!
Eu usaria tree
.
$ tree -d /usr|head -n 12 /usr |-- X11R6 | '-- lib | '-- X11 | '-- wily |-- bin | '-- X11 -> . |-- games |-- i586-mingw32msvc | |-- bin | |-- include | | |-- GL
Se você não tem árvore, você pode usar este comando linux / unix:
ls -R | grep ":$" | sed -e 's/:$//' -e 's/[^-][^\/]*\//--/g' -e 's/^/ /' -e 's/-/|/'
Você também pode fazer um script de shell ver detalhes aqui.
Explicação do comando acima:
ls -R
lista todos os diretórios, subdiretórios
Explicação
ls -R
lista todos os arquivos e diretórios recursivamente
ex:
./sys/devices/platform/ag71xx.0/net/eth0:
addr_assign_type device iflink speed
./sys/devices/platform/ag71xx.0/net/eth0/queues:
tx-0
grep ":$"
filtra apenas os arquivos que têm :
antes do fim da linha,
assim permanece, algo como.
./sys/devices/platform/ag71xx.0/net/eth0:
./sys/devices/platform/ag71xx.0/net/eth0/queues:
Em seguida, uma série de vários comandos é passada usando -e
switch para sed
's/:$//'
retira toda a trailin :
's/[^-][^\/]*\//--/g'
deixa apenas o que está entre /
-
e substitui cada um por --
o comando restante dois adiciona alguns espaços e um |
O resultado é algo como:
|-----------eth0
|-------------queues