Tuve la necesidad de encontrar todos los archivos modificados el mes de marzo de 2018. Tarea simple gracias a find.



Muchas personas tienen miedo a la consola, o sienten que todo lleva más tiempo y tedio. Aunque en realidad es todo o contrario, las herramientas de línea de comandos son mucho más eficaces, efectivas y poderosas que las herramientas GUI. Esto se debe a que la presunta facilidad de uso como calidad de software, va en contra de la eficiencia y posibilidades en cuanto a funcionalidad.

Este es un ejemplo de ello: a través de un simple comando puedo obtener información o llevar a cabo una tarea, que dudo difícilmente muchas GUI sean capaces de lograr.

En esta oportunidad necesitaba listar todos los archivos que fueron modificados durante el mes de marzo de 2018. Anteriormente expliqué cómo buscar archivos por fecha o cómo listar los archivos modificados en las últimas 24 horas. En estos artículos hacía uso de las opciones -newer y -mtime respectivamente. Sin embargo, en esta oportunidad aproveché la opción -printf, que controla la salida que será mostrada para cada coincidencia.

root@linuxito:/etc# find /etc -type f -printf "%Cm-%CY %p\\n" | grep "^03-2018"
03-2018 /etc/network/interfaces
03-2018 /etc/sysctl.conf
03-2018 /etc/hosts
03-2018 /etc/hostname
03-2018 /etc/init/console.conf
03-2018 /etc/init/tty2.conf
03-2018 /etc/exim4/update-exim4.conf.conf
03-2018 /etc/mailname
03-2018 /etc/resolv.conf

La opción -printf permite definir el formato de la salida de find. Esta opción tiene una infinidad de posibilidades, ya que permite visualizar todo tipo de información disponible en un i-nodo a través de diferentes directivas. A fin de poder encontrar todos los archivos modificados en un mes específico, simplemente decidí mostrar el mes y año (de la fecha de modificación) junto con el nombre de cada coincidencia mediante las directivas %Cm, %CY y %p respectivamente.

El criterio de búsqueda era sólo encontrar archivos (no directorios) utilizando -type f.

Luego basta con filtrar la salida utilizando grep. En este caso recuperando sólo las líneas que comienzan con la cadena "03-2018" (o sea marzo de 2018).

Este tipo de personalización de la salida de find utilizando -printf en conjunto con un filtrado con grep permite encontrar archivos por todo tipo de criterios interesantes como tamaño en disco (%b, %k y %s), tipo de filesystem (%F), permisos en octal (%m) y otros.

Para más información, revisar su página de manual (man find).


Tal vez pueda interesarte


Compartí este artículo