En la terminal es un poco complicado ver la estructura de un directorio, podrías acceder a unos cuanto directorios para ver que contiene, pero si es una cantidad grande la tarea es un tanto complicada. Para eso existe el comando linux tree que te muestra esa estrucutra dentro de una ruta y aquí te muestro como puedes instalar el comando tree y como usarlo en linux
El comando tree en Linux
El comando linux tree lista de forma recursiva los directorios y archivos contenidos en un ruta y los muestra en forma estructurada de tal forma que con se puede apreciar que directorio o archivos se encuentran dentro de otros mediante una identación y simbolos que representan esa dependencia.
Este es un ejemplo de laestrctura del directorio home de un usuario genérico:
/home
└── User
├── Desktop
├── Documents
├── Downloads
├── Music
├── Pictures
├── Public
├── Templates
├── Videos
└── VirtualBox VMs
Es importante aclarar que este comando no está instalado por default en la mayoría de las distribuciones Linux por lo que hay que hacerlo de forma manual. Puedes instalar en el comando tree en las distintas distribuciones linux con estos comandos:
Debian / Ubuntu / Linux Mint
sudo apt install tree
Red Hat / Centos / Fedora
yum install tree
Arch / Manjaro
sudo pacman -S tree
openSUSE
zypper install tree
Este comando tiene una gran variedad de parámetros con los que puedes encontrar lo que necesites dentro de una estructura de directorios. Te muestro algunos ejemplos prácticos con los que puedes sacarle todo el jugo a este comando.
Cómo monstrar solo directorios con el comando tree
Una de las necesidades comunes al usar el comando tree es cuando requieres listar solo los directorios, por ejemplo, para saber si un directorio existe y saber si se encuentra en la ruta que que necesitas.
tree -d
La salida de este comando puede mostrarte una estructura parecida a esta:
$ tree -d ~
/home/user
├── Desktop
├── Documents
│ s
├── Downloads
│ └── tor-browser_en-US
├── Music
├── Pictures
│ ├── 3d clipart
│ ├── logos
│ ├── wallpapers
│ └── Webcam
├── Public
├── Templates
├── Videos
└── VirtualBox VMs
├── Debian10
└── django-react
Como mostrar los archivos modificados primero con el comando tree
Otro uso que puedes dar al comando tree en Linux es saber cuales fueron los archivos que se modificaron en fechas mas recientes.
$ tree -t -P *.txt ~/Documents
/home/user/Documents
├── SIA TEST.txt
├── migracio de xen server a vmware.txt
├── users_linux.txt
├── userlist_A.txt
├── userlist_M.txt
├── users_domain.txt
├── test.txt
├── Books
├── Personal
└── Notes
En el comando anterior podemos encontrar los archivos .txt dentro del directorio Documents, además nos muestra primero el que fue modificado más recientemente
Como ver los permisos de los archivos y directorios con el comando tree
También puedes requerir ver los permisos que tienen los archivos y directorios dentro de una ruta en particular, ya sea para depurar algun error o para asegurar que solo los usuarios correctos puedan leer o modificar un archivo o directorio. Esto lo puedes hacer agregando el parámetro -p
$ tree -t -p -P *.txt ~/Documents
/home/user/Documents
├── [-rw-r--r--] SIA TEST.txt
├── [-rw-r--r--] migracio de xen server a vmware.txt
├── [-rw-r--r--] users_linux.txt
├── [-rw-r--r--] userlist_GA.txt
├── [-rw-r--r--] userlist_GACOM.txt
├── [-rw-r--r--] users_domain.txt
├── [-rw-r--r--] test.txt
├── [drwxr-xr-x] Books
├── [drwx------] Personal
└── [drwxr-xr-x] Notes
Puedes encontrar una lista copleta de los parámetros del comando tree consultando la documentación del comando con le comando:
man tree
Aquí te comparto una relación resumida de las opciones de este comando:
——- opciones de listado ——-
-a All files are listed.
-d List directories only.
-l Follow symbolic links like directories.
-f Print the full path prefix for each file.
-x Stay on current filesystem only.
-L level Descend only level directories deep.
-R Rerun tree when max dir level reached.
-P pattern List only those files that match the pattern given.
-I pattern Do not list files that match the given pattern.
–ignore-case Ignore case when pattern matching.
–matchdirs Include directory names in -P pattern matching.
–noreport Turn off file/directory count at end of tree listing.
–charset X Use charset X for terminal/HTML and indentation line output.
–filelimit # Do not descend dirs with more than # files in them.
–timefmt Print and format time according to the format .
-o filename Output to file instead of stdout.
——– Opciones de Archivos ———
-q Print non-printable characters as ‘?’.
s Print non-printable characters as is.
-Q Quote filenames with double quotes.
-p Print the protections for each file.
-u Displays file owner or UID number.
-g Displays file group owner or GID number.
-s Print the size in bytes of each file.
-h Print the size in a more human readable way.
–si Like -h, but use in SI units (powers of 1000).
-D Print the date of last modification or (-c) status change.
-F Appends ‘/’, ‘=’, ‘*’, ‘@’, ‘|’ or ‘>’ as per ls -F.
–inodes Print inode number of each file.
–device Print device ID number to which each file belongs.
——- opciones de ordenamiento ——-
-v Sort files alphanumerically by version.
-t Sort files by last modification time.
-c Sort files by last status change time.
-U Leave files unsorted.
-r Reverse the order of the sort.
–dirsfirst List directories before files (-U disables).
–sort X Select sort: name,version,size,mtime,ctime.
——- opciones de visualización ——
-i Don’t print indentation lines.
-A Print ANSI lines graphic indentation lines.
-S Print with CP437 (console) graphics indentation lines.
-n Turn colorization off always (-C overrides).
-C Turn colorization on always.
——- XML/HTML/JSON ——-
-X Prints out an XML representation of the tree.
-J Prints out an JSON representation of the tree.
-H baseHREF Prints out HTML format with baseHREF as top directory.
-T string Replace the default HTML title and H1 header with string.
–nolinks Turn off hyperlinks in HTML output.
—- Miscelaneos —-
–version Print version and exit.
–help Print usage and this help message and exit.
— Options processing terminator.
By dar permisos a todos los archivos de una carpeta linux - DecorStatus 11/08/2021 - 6:50 am
[…] El comando tree en Linux […]