Este artículo explica el uso de la herramienta tree para listar el contenido de un directorio en un formato de tipo árbol.

En sistemas operativos GNU/Linux y FreeBSD existe una herramienta similar a pstree, pero para visualizar jerarquías de directorios desde línea de comandos. Para quienes tampoco conozcan pstree, esta herramienta se utiliza para visualizar un árbol de procesos (según la jerarquía definida por la relación padre/hijo):

root@debian7:~# pstree
init─┬─acpid
     ├─atd
     ├─atop
     ├─beremote───4*[{beremote}]
     ├─cron
     ├─6*[getty]
     ├─ntpd
     ├─postgres───6*[postgres]
     ├─rpc.idmapd
     ├─rpc.statd
     ├─rpcbind
     ├─rsyslogd───3*[{rsyslogd}]
     ├─sshd───sshd───sshd───sudo───su───bash───pstree
     ├─udevd───2*[udevd]
     └─vmtoolsd───{vmtoolsd}

tree utiliza la misma representación gráfica, pero para visualizar directorios.

Para instalar tree en Debian y derivados, ejecutar:

# apt-get install tree

Para instalar tree en FreeBSD, ejecutar:

# pkg install tree

Por defecto, tree genera un árbol con todos los archivos y subdirectorios a partir de un directorio pasado como parámetro (o el directorio actual, si no se especifica ninguno), de manera recursiva:

root@linuxito:~# tree /usr/local/share/ | head -n 30
/usr/local/share/
|-- applications
|   |-- zenmap-root.desktop
|   `-- zenmap.desktop
|-- ca-certificates
|-- man
|   |-- de
|   |   `-- man1
|   |       `-- nmap.1
|   |-- es
|   |   `-- man1
|   |       `-- nmap.1
|   |-- fr
|   |   `-- man1
|   |       `-- nmap.1
|   |-- hr
|   |   `-- man1
|   |       `-- nmap.1
|   |-- hu
|   |   `-- man1
|   |       `-- nmap.1
|   |-- it
|   |   `-- man1
|   |       `-- nmap.1
|   |-- ja
|   |   `-- man1
|   |       `-- nmap.1
|   |-- man1
|   |   |-- ncat.1
|   |   |-- ndiff.1

Si se desean visualizar sólo los directorios se debe utilizar la opción -d:

root@linuxito:~# tree -d /usr/local/share/ | head -n 30
/usr/local/share/
|-- applications
|-- ca-certificates
|-- man
|   |-- de
|   |   `-- man1
|   |-- es
|   |   `-- man1
|   |-- fr
|   |   `-- man1
|   |-- hr
|   |   `-- man1
|   |-- hu
|   |   `-- man1
|   |-- it
|   |   `-- man1
|   |-- ja
|   |   `-- man1
|   |-- man1
|   |-- pl
|   |   `-- man1
|   |-- pt_BR
|   |   `-- man1
|   |-- pt_PT
|   |   `-- man1
|   |-- ro
|   |   `-- man1
|   |-- ru
|   |   `-- man1
|   |-- sk

También es posible limitar la cantidad de niveles a descender a través de la opción -L:

root@linuxito:~# tree -d -L 2 /usr/local/share/ | head -n 30
/usr/local/share/
|-- applications
|-- ca-certificates
|-- man
|   |-- de
|   |-- es
|   |-- fr
|   |-- hr
|   |-- hu
|   |-- it
|   |-- ja
|   |-- man1
|   |-- pl
|   |-- pt_BR
|   |-- pt_PT
|   |-- ro
|   |-- ru
|   |-- sk
|   `-- zh
|-- ncat
|-- nmap
|   |-- nselib
|   `-- scripts
|-- sgml
|   |-- declaration
|   |-- dtd
|   |-- entities
|   |-- misc
|   `-- stylesheet
|-- xml

Si se requiere obtener la ruta completa de cada archivo, recurrir a la opción -f:

root@linuxito:~# tree -f -d -L 2 /usr/local/share/ | head -n 30
/usr/local/share
|-- /usr/local/share/applications
|-- /usr/local/share/ca-certificates
|-- /usr/local/share/man
|   |-- /usr/local/share/man/de
|   |-- /usr/local/share/man/es
|   |-- /usr/local/share/man/fr
|   |-- /usr/local/share/man/hr
|   |-- /usr/local/share/man/hu
|   |-- /usr/local/share/man/it
|   |-- /usr/local/share/man/ja
|   |-- /usr/local/share/man/man1
|   |-- /usr/local/share/man/pl
|   |-- /usr/local/share/man/pt_BR
|   |-- /usr/local/share/man/pt_PT
|   |-- /usr/local/share/man/ro
|   |-- /usr/local/share/man/ru
|   |-- /usr/local/share/man/sk
|   `-- /usr/local/share/man/zh
|-- /usr/local/share/ncat
|-- /usr/local/share/nmap
|   |-- /usr/local/share/nmap/nselib
|   `-- /usr/local/share/nmap/scripts
|-- /usr/local/share/sgml
|   |-- /usr/local/share/sgml/declaration
|   |-- /usr/local/share/sgml/dtd
|   |-- /usr/local/share/sgml/entities
|   |-- /usr/local/share/sgml/misc
|   `-- /usr/local/share/sgml/stylesheet
|-- /usr/local/share/xml

Para más información:

$ man tree


Tal vez pueda interesarte


Compartí este artículo