Descubre cómo mostrar archivos ordenados por tamaño en GNU/Linux de manera sencilla mediante un pequeño script one-line (script Linux de una linea) que podrás reutilizar tantas veces como necesites.
Esta consulta puede ayudarnos a localizar cuales son los ficheros más grandes que tenemos dentro de un sistema de ficheros que está a punto de quedarse sin espacio para purgar o mover los archivos que no queramos mantener o que sean más sacrificables con el fin de mantener el sistema de ficheros con suficiente espacio libre y evitar un llenado del disco que pudiera derivar en una caída del mismo.
En este caso, para realizar esta tarea, dado que estamos en el mundo de GNU/Linux, hemos decidido usar comandos nativos de cualquier sistema de este tipo, sin hacer uso de ningún leguaje de scripting como podría ser Python, Perl, etc.
Ahora te vamos a dar posibilidad de elegir:
- Si quieres aprender las distintas opciones de este comando sigue leyendo normalmente.
- Si solo te interesa el comando o script en sí y te quieres ahorrar leer la explicación pincha aquí.
Cómo mostrar archivos ordenados por tamaño mediante script GNU/Linux:
En este caso usaremos el siguiente comando “oneline”:
# du -a | sort -n -r | less
En el que se usa la combinación de los comandos “du” y “sort” junto a una tubería (pipeline) para hacer el tratamiento de la salida del comando anterior.
Vamos a comentar brevemente cómo se compone el comando y cómo es tratado.
Por un lado, se lanza el comando “du” (Disk Usage) es un comando de UNIX y GNU/Linux que es ampliamente usado para la consulta del espacio disponible dentro de un disco duro.
El comando tiene una estructura muy sencilla, en el que simplemente se pone el comando, las opciones y la unidad o fichero sobre el que se está haciendo la consulta, con una estructura similar a la siguiente:
# du <opciones> <fichero/sistema>
El comando, básicamente, hace un repaso de la estructura de ficheros de manera recursiva sumando el espacio ocupado por cada uno de los archivos hasta dar un espacio total usado.
En este caso, el comando se usa junto al modificador “-a” que indica que se deben tener en cuenta todos los ficheros, no solo los directorios.
NOTA: En caso de aprender más sobre “du” se puede consultar la página de manual du(1) – Linux manual page (man7.org)
La ejecución de ese comando “du -a” no se muestra, sino que pasa por una tubería para ser la entrada del siguiente comando en la lista, que en este caso es “sort -n -r”.
El comando “sort” realiza la ordenación en base a una serie de parámetros que configuremos en los parámetros posteriores. En este caso, se añade “-n” que hace una compasión en base al valor numérico de la cadena, y en este caso, se añade un segundo parámetro, que es “-r” y permite mostrar la salida en orden inverso, o sea, de mayor a menor; esto hace que en caso de querer ordenar de menor a mayor simplemente sea necesario eliminar este “-r”.
NOTA: En caso de aprender más sobre “sort” se puede consultar la página de manual sort(1) – Linux manual page (man7.org)
Por último, se vuelve a hacer un “pipe” para pasar la salida a un comando adicional, que en este caso es un “less” y sirve para mostrar la salida en pantalla, permitiendo controlar lo que vemos cada vez. Aunque también lo podemos ejecutar con “more” si lo prefieres, aunque por manías mías siempre uso “less”.
# du -a | sort -n -r | more
Otra opción que se puede hacer es no mostrar por pantalla, sino reenviarlo a un archivo para poder revisarlo posteriormente:
# du -a | sort -n -r >> salidalistado.txt
La ejecución del comando nos mostrará por pantalla los distintos archivos localizados en la ruta donde se haya lanzado el “oneline”, mostrando, tal como hemos solicitado, los más grandes al principio de la lista y los más pequeños al final.
Script para mostrar archivos ordenados por tamaño en GNU/Linux:
El “oneline” a usar para ver los ficheros de un sistema de ficheros ordenados de mayor a menor es:
# du -a | sort -n -r | less
Con esto podemos dar por finalizado este pequeño script, aunque quizá sea muy ambicioso llamarlo así, ya que es un oneline.
Conclusiones:
Como puedes ver en el tutorial cómo mostrar archivos ordenados por tamaño en GNU/Linux, con un par de comandos bien vinculados se puede obtener una información muy útil que permitirá mantener el sistema a salvo de llenados de filesystem. Aun así, como es lógico, esto es un workaround para salir de un aprieto puntual, y se deberían aplicar cuotas de disco, monitorización de los filesystem, etc.
La ejecución es sencilla y debería estar soportada por todos los sistemas GNU/Linux, pero si encontraras algún problema en su ejecución puedes contactar con nosotros para que intentemos echarte una mano.
Asimismo, recuerda que tienes nuestros tutoriales disponibles para tu consulta en el blog de Jotelulu.
¡Gracias por leernos!