El comando find de Linux y cómo ayuda a mostrar tamaños de archivos legibles
09:33, 07.06.2024
Find es un método bastante efectivo en el sistema operativo Linux que se requiere para encontrar directorios/archivos de acuerdo a atributos específicos. Cuando se habla del tamaño de los archivos, los resultados por defecto pueden no ser tan comprensibles para los usuarios.
Para cambiar esta situación abrumadora por una salida más clara, decidimos compartir nuestra experiencia en este ámbito. La mezcla del comando find con otros comandos puede ser útil en esta situación y de esta manera simplificará definitivamente el proceso de búsqueda.
Aquí en el artículo, compartiremos algunas de las combinaciones de comandos más útiles que pueden dar resultados humanos. Si este tema le parece interesante, entonces veamos un par de buenos ejemplos.
Acción -printf del comando find
Con el uso del comando find, es probable que la búsqueda de los archivos en función de su tamaño, permiso, propiedad, tipo, nombre, y mucho más. Cuando aplicamos otro comando que es -printf, imprime la información sobre archivos buscados en particular. Para obtener información sobre el tamaño del archivo, debe aplicar especificadores como %s.
Este es el aspecto que debería tener este comando:
$ find /pathtodirectory -type f -printf "%s %p\n"
Con el uso de %s, se obtiene la salida en bytes. Aquí la salida serán números en bytes y los títulos de los archivos después de ellos. Para obtener información más legible, por ejemplo, en kilobytes en lugar de revisar la opción por defecto, utilice el siguiente comando:
$ find /pathtodirectory -type f -printf "%k KB %p\n"
Mediante el uso de %k, está especificando el criterio de kilobytes en su búsqueda. Antes de utilizar cualquiera de los ejemplos mencionados, debe comprobar si es adecuado para su sistema operativo, ya que este comando puede funcionar de forma ligeramente diferente en distintos sistemas Unix.
El du Command en acción
Otra gran opción es el uso del comando du junto con find. Du ya está preinstalado en todos los sistemas Linux, por lo que no es necesario perder tiempo adicional en el proceso de instalación. He aquí un ejemplo de cómo se puede utilizar este comando:
$ find /pathtodirectory -type f -exec du -h {} +
Ahora, tratemos de entender qué comandos se han utilizado aquí. -type parte f busca todos los archivos en el directorio determinado. -exec está ejecutando el siguiente comando, el símbolo más permite buscar varios nombres de archivo, y las llaves se utilizan para mostrar todos los datos necesarios en forma de lista.
Para mostrar todos los ficheros en megas, también se puede utilizar du. Sin embargo, en este caso, los archivos que tengan menos de 1 MB se mostrarán como si tuvieran un megabyte. La línea de comandos tendrá este aspecto:
$ find /pathtodirectory -type f -exec du -m {} +
Puede utilizar este comando y obtener una salida fiable sólo cuando los archivos son de 1 MB y más.
Si necesita este tipo de información sólo acerca de los directorios, también se puede utilizar será el mismo comando. Así es como se ve:
$ find /pathtodirectory -maxdepth 1 -type d -exec du --max-depth=1 -h {} +
Con el uso de esta línea, usted está buscando para todos los directorios en la ruta que usted menciona inmediatamente después del hallazgo. Las características de Maxdepth sólo buscan directorios en la carpeta elegida. El último número de la salida muestra el tamaño total de todos los directorios.
Exploración del tamaño de los archivos con ls
Ls es un comando típico de Linux necesario para listar directorios/archivos. Para mostrar salidas relacionadas con humanos de los tamaños de los archivos, puede utilizar la siguiente línea:
$ find /pathtodirectory -type f -exec ls -lh {} +
En esta secuencia, ls -lh es responsable de mostrar todos los elementos de cada archivo, incluyendo también las características de tamaño. Para que esta línea sea más específica y muestre los resultados de tamaño en kilobytes (también se puede utilizar para megabytes y bytes) utilice el siguiente ejemplo:
$ find /pathtodirectory -type f -exec ls -l --block-size=KB {} +
En caso de que necesite información más estructurada sobre los tamaños de los archivos, puede elegir mostrarlos en orden descendente/ascendente. Esto se puede hacer con el uso de la siguiente línea:
$ find /pathtodirectory -type f -print0 | xargs -0 ls -lS --block-size=KB
La salida mostrará los resultados en orden descendente.
Filtrado avanzado con grep
Para el filtrado avanzado, el comando más utilizado es grep, con cuya ayuda puede seleccionar el patrón necesario y todas las secuencias mostradas incluirán este tipo de patrón especificado. A modo de ejemplo, escribamos el comando que mostrará sólo los archivos que están en MB:
$ find /pathtodirectory -maxdepth 1 -type f -exec du -h {} + | grep -E '\b[0-9]+M\b'
En esta línea, \b se utiliza como un límite específico que significa que M se buscará como parte del tamaño, pero no de otra manera. Para restringir los criterios de búsqueda, puede utilizar el mismo comando y añadir una palabra clave necesaria. La línea debería verse así
$ find /pathtodirectory -type f -exec du -h {} + | grep 'keyword'
Clasificación y depuración de resultados
Si desea ordenar los archivos de acuerdo a su tamaño, hay un par de opciones que se pueden utilizar y aquí le ofreceremos un par de ejemplos de cómo el comando sort puede ser utilizado para este propósito.
$ find /pathtodirectory -maxdepth 1 -type f -exec du -h {} + | sort -h -k1
En esta línea, como en la mayoría de las mencionadas anteriormente, usamos du para obtener tamaños legibles por humanos. Con la característica -k1, aclaramos que el filtrado debe hacerse dependiendo del campo inicial de cada línea. Por defecto, el orden es ascendente, pero añadiendo -r también se pueden obtener resultados descendentes. Así es como debería verse
$ find /pathtodirectory -maxdepth 1 -type f -exec du -h {} + | sort -rh -k1
Podemos ir aún más lejos en nuestra búsqueda y especificar el tamaño exacto del archivo que necesitamos o por debajo/por encima de un cierto rango. Por ejemplo, busquemos archivos en línea que estén por debajo de 30 MB:
$ find /pathtodirectory -maxdepth 1 -type f -size -30M -exec du -h {} +
Para encontrar resultados superiores a 30 megabytes, basta con cambiar el signo menos por un signo más. En caso de que necesites ficheros que tengan un tamaño concreto y no superior o inferior, sólo tienes que quitar +/- antes del número de megabytes.
Una cosa más que puedes hacer con el comando de ordenación es mostrar los resultados en orden descendente/ascendente, esto se puede hacer como en la siguiente línea:
find /pathtodirectory -maxdepth 1 -type f -size +30k -exec du -h {} + | sort -h -k1
Resumen
Aquí en este escrito, intentamos compartir nuestro conocimiento práctico en el campo y ofrecer ejemplos reales de cómo el comando find puede ser utilizado para mostrar resultados de búsqueda de una manera más comprensible y legible por humanos. En cuanto a la salida por defecto, el usuario obtendrá los resultados en bytes y esto no siempre es tan conveniente como debería ser y mucho más difícil para una interpretación adecuada.
Para obtener resultados más personalizables para su búsqueda, hay un par de buenas opciones como ls, grep, du, y más. Con el uso de salidas fáciles de usar, se hizo mucho más fácil obtener mejores conocimientos. Tiene una gran oportunidad de probar todo lo que acaba de aprender en teoría, no hay desafíos para implementar estos comandos incluso para usuarios inexpertos.