Veamos cómo hacer que se muestre un resumen con el número de carpetas y archivos al listar el contenido de una carpeta en la terminal de nuestro sistema GNU/Linux

Estando en una terminal, es una tarea muy común el listar el contenido de una carpeta para que nos muestre el listado de archivos y carpetas que contiene. Eso lo podemos realizar con el comando ls
o con herramientas más modernas como exa
Hace unos días, al escribir un artículo para el blog sobre el comando tree
me gustó el detalle de que al terminar, hace un resumen en el que muestra el número de directorios y archivos que el comando ha mostrado.
Pensé que me gustaría que exa, que es el comando (con el alias de ll) que uso para mostrar el contenido de las carpetas también tuviera esa funcionalidad. Y dándole alguna vuelta, así logré tenerlo.
Para mostrar ese resumen del comando tree en exa, había además que usar tail para que seleccionara la última línea del comando tree.
Al final el comando quedaría así:
ll && tree -L 1 | tail -n 1
Como he dicho antes, ll es un alias que tengo establecido para que ejecute exa con los siguientes parámetros: exa --icons --long --header --git --group-directories-first
El resultado, es lo que ves en la captura que abre el artículo. Se muestra el contenido de la carpeta y se añade el resumen final del comando tree, del que el comando tail ha recortado la última línea para mostrarla.
El comando tiene algún pequeño contratiempo, ya que si quieres que exa muestre todos los archivos, incluidos ocultos, también a tree deberás pedírselo, para que concuerde lo mostrado con el resumen final. Para ello deberemos hacerlo así:
ll -a && tree -aL 1 | tail -n 1
También podemos usar alguna otra de las funcionalidades de las opciones del comando tree, para que nos muestre lo que ocupan dichos archivos y directorios mediante la opción --du
y añadiendo también -h
para que muestre el valor de una manera adecuada. Quedando así:
ll && tree --du -hL 1 | tail -n 1
¿Te ha resultado interesante la opción que te he traido? Ya queda en tu mano añadir ese comando a tus alias y adaptarlo a tus gustos personales.
Enlaces de interés
- https://victorhckinthefreeworld.com/2022/10/31/el-comando-tree-en-gnu-linux/
- https://victorhckinthefreeworld.com/2021/09/09/el-comando-tail-de-gnu/
- https://victorhckinthefreeworld.com/2020/04/29/exa-un-reemplazo-mas-colorido-y-moderno-para-el-comando-ls/

Interesante. Habría que alargar la macro del exa y que pudiera funcionar especificando otros directorios.
Si hago:
~/Descargas ls1 && tree –du -hL 1 | tail -n 1 ✔ 12:41:04
Permissions Size User Date Modified Name
.rwxrwxrwx 2,1Mi krovikan 27 jun 2017 Benny Hill.mp3
drwxr-xr-x – krovikan 30 oct 12:13 Dragon Quest
drwxr-xr-x – krovikan 8 may 11:04 El Bueno, el Feo y el Malo Antiguo
.rw-r–r– 21Mi krovikan 19 may 2020 Manual Samsung TV.pdf
.rw-r–r– 287Ki krovikan 8 oct 11:42 Neofetch.png
.rw-r–r– 925Mi krovikan 26 sep 16:00 openSUSE-Leap-15.4-KDE-Live-x86_64-Build7.52-Media.iso
.rw-r–r– 303Ki krovikan 1 nov 17:23 Sensors.png
.rw-r–r– 9,1Mi krovikan 12 mar 15:57 So I Tried Elden Ring.mp4
.rw-r–r– 102Ki krovikan 1 nov 17:22 Sources.png
.rw-r–r– 889Ki krovikan 1 nov 19:38 Steam 01.png
.rw-r–r– 655Ki krovikan 1 nov 16:50 SuSE Escritorio.png
.rw-r–r– 410Ki krovikan 1 nov 16:41 SuSE Leap 15.4.png
.rw-r–r– 35Ki krovikan 1 nov 1:36 tide-5.5.1.tar.gz
.rw-r–r– 88Ki krovikan 13 jun 20:45 Transferencia claraboya.pdf
961M used in 2 directories, 12 files
Me da un resultado falso. El primer directorio ocupa varias gigas. Sólo lo soluciono con un -hL 2 pero un alias es estático. Sería fabuloso un alias universal sin tener que especificar numeritos y que ponga junto a cada directorio lo que ocupa en sí (algo de ese me suena de un comando DOS o una aplicación).
Si justo después del comando que he puesto arriba, pongo este otro:
~/Descargas ls1 /home/krovikan && tree –du -hL 1 | tail -n 1 ✔ 12:43:38
Permissions Size User Date Modified Name
drwxr-xr-x – krovikan 31 may 2021 .aboutloveandhate
drwxr-xr-x – krovikan 1 nov 16:25 .audacity-data
drwxr-xr-x – krovikan 1 nov 16:27 .avidemux3
.rw——- 24Ki krovikan 1 nov 10:13 .bash_history
.rw-r–r– 1,3Ki krovikan 31 oct 19:24 .bashrc
drwx—— – krovikan 2 nov 12:28 .cache
drwx—— – krovikan 2 nov 12:28 .config
drwx—— – krovikan 31 oct 18:34 .cups
drwxr-xr-x – krovikan 15 mar 12:35 .fonts
.rw-r–r– 110 krovikan 30 oct 18:27 .fonts.conf
drwxr-xr-x – krovikan 25 mar 2018 .frictionalgames
drwxr-xr-x – krovikan 1 nov 12:56 .gpac
.rw-r–r– 274 krovikan 2 nov 12:27 .gtkrc-2.0
drwxr-xr-x – krovikan 2 nov 12:27 .hplip
.rw-r–r– 73 krovikan 25 may 2018 .i18n
.rw-r–r– 861 krovikan 9 abr 2018 .inputrc
.rw-rw-r– 98 krovikan 1 nov 16:10 .install4j
drwxr-xr-x – krovikan 1 nov 16:06 .java
drwxr-xr-x – krovikan 30 oct 18:11 .kde4
.rw——- 20 krovikan 1 nov 17:28 .lesshst
drwx—— – krovikan 30 oct 18:32 .local
drwxr-xr-x – krovikan 26 dic 2019 .mozilla
drwx—— – krovikan 1 nov 11:17 .nv
.rw-r–r– 2,2Ki krovikan 2 nov 1:05 .nvidia-settings-rc
drwxr-xr-x – krovikan 1 nov 16:10 .oracle_jre_usage
drwx—— – krovikan 31 oct 16:08 .pki
.rw-r–r– 1,0Ki krovikan 7 may 17:38 .profile
drwxrwx— – krovikan 31 oct 18:39 .sane
drwxr-xr-x – krovikan 2 nov 1:39 .steam
lrwxrwxrwx 33 krovikan 2 nov 1:22 .steampath -> /home/krovikan/.steam/sdk32/steam
lrwxrwxrwx 31 krovikan 2 nov 1:22 .steampid -> /home/krovikan/.steam/steam.pid
.rw——- 1,0Ki krovikan 31 oct 13:40 .viminfo
lrwxrwxrwx 16 krovikan 31 oct 0:39 .wine -> /mnt/juegos/wine
drwxr-xr-x – krovikan 31 oct 19:43 .winedxvk
.rw-r–r– 1,9Ki krovikan 25 may 2018 .xim.template
drwxr-xr-x – krovikan 1 nov 12:55 .xine
.rwxr-xr-x 1,1Ki krovikan 5 may 2019 .xinitrc.template
.rw-r–r– 8,9Ki krovikan 31 oct 17:19 .xscreensaver
drwxr-xr-x – krovikan 11 sep 19:28 Alberto
drwxr-xr-x – krovikan 8 ene 2020 Anime – Música
drwxr-xr-x – krovikan 27 may 2016 Anime – Vídeo
drwxr-xr-x – krovikan 4 oct 23:20 bin
drwxr-xr-x – krovikan 1 nov 19:38 Descargas
drwxr-xr-x – krovikan 19 nov 2010 DVD 2004 – 2008
drwxr-xr-x – krovikan 31 oct 19:43 Escritorio
.rw-r–r– 2,0Ki krovikan 2 nov 2021 Final WoW
drwxr-xr-x – krovikan 30 oct 18:11 Imágenes
drwxr-xr-x – krovikan 1 nov 16:17 jJDownloader2
drwxr-xr-x – krovikan 6 dic 2019 Juegos-DOS
drwxr-xr-x – krovikan 16 oct 2010 Juegos-WIN
drwxr-xr-x – krovikan 4 jul 2018 My Games
drwxr-xr-x – krovikan 1 nov 13:06 Música
.rw-rw-rw- 625 krovikan 24 dic 2017 Olentzero
drwxr-xr-x – krovikan 13 jun 18:13 Películas
.rw-r–r– 8,3Ki krovikan 14 may 12:33 Perfil Steam
.rw-r–r– 114Ki krovikan 1 nov 23:24 Reseñas Steam
drwxr-xr-x – krovikan 1 nov 10:52 Retoques
drwxr-xr-x – krovikan 22 oct 11:28 Series
drwxr-xr-x – krovikan 29 oct 13:37 WINE-29-10-2022
.rw-r–r– 577Ki krovikan 1 nov 12:39 Wordle.png
961M used in 2 directories, 12 files
Me sale el contenido de mi home pero con el conteo del directorio de la orden anterior.
Saludos
Te muestra los ficheros ocultos, pero a tree no le has dicho que los muestre. Para eso añade en tree la opción -a
saludos!
Por cierto, en vez de un alias, puedes usar una función y pasarle parámetros… eso ya a tu elección!! 🙂
Me encantan estos posts, muchas gracias por compartir Victor.
Me alegro de que te gusten.
Saludos y gracias por comentar…