El comando find
es una herramienta poderosa y versátil en sistemas Unix para buscar archivos y directorios basándose en una gran variedad de criterios. Dos de los usos más comunes son encontrar archivos con una antigüedad determinada y, en combinación con otros comandos, realizar acciones sobre esos archivos. Vamos aver como buscar archivos antiguos en linux con find.
Ejemplo para Buscar y Borrar Archivos Más Antiguos de 30 Días con find
Ejemplo para buscar archivos más antiguos de 30 días
find / -mtime +30
Desglosando el comando
find
: Este es el comando principal que invoca la utilidad de búsqueda de archivos./
: Este es el punto de partida de la búsqueda. En este caso, la/
representa el directorio raíz, lo que significa que la búsqueda se realizará en todo el sistema de archivos. Es importante ser muy cuidadoso al usar/
como punto de inicio, especialmente si planeas eliminar archivos, ya que podrías afectar archivos críticos del sistema. Generalmente, es más seguro especificar un directorio más específico donde esperas encontrar los archivos que deseas gestionar.-mtime
: Esta es una opción defind
que filtra los archivos basándose en su tiempo de modificación. El tiempo de modificación es la última vez que el contenido del archivo fue alterado.+30
: Este argumento indica que queremos encontrar archivos cuyo tiempo de modificación sea mayor que 30 días. El signo+
significa “mayor que”. Si usáramos-30
, buscaríamos archivos modificados hace menos de 30 días, y si usáramos30
(sin signo), buscaríamos archivos modificados exactamente hace 30 días.
Borrar archivos mediante find, más antiguos de 30 días
find /root/* -mtime +30 -exec rm {} \;
Desglosando este comando
find
: El comando de búsqueda de archivos./root/*
: Este es el punto de partida de la búsqueda, específicamente todos los archivos y directorios directamente dentro del directorio/root/
. El uso del wildcard*
aquí limita la búsqueda al primer nivel dentro de/root/
. Si quisieras buscar recursivamente dentro de los subdirectorios de/root/
, deberías usar simplemente/root/
. ¡Ten mucho cuidado al usar/root/*
si tu intención es una búsqueda recursiva!-mtime +30
: Como se explicó anteriormente, esto filtra los archivos modificados hace más de 30 días.-exec rm {} \;
: Esta es la parte que ejecuta el comando de eliminación (rm
) sobre los archivos encontrados.-exec
: Esta opción defind
permite ejecutar un comando externo.rm
: Este es el comando para eliminar archivos y directorios. ¡Ten extrema precaución al usarrm
confind
, ya que la eliminación es permanente!{}
: Estas llaves son un marcador de posición quefind
reemplaza con la ruta de cada archivo encontrado.\;
: El punto y coma al final indica el fin del comando a ejecutar con-exec
. La barra invertida\
escapa el punto y coma para que sea interpretado porfind
y no por la shell.
Hola Rubén. Otra opción interesante, especificar la fecha concreta a partir de la cual borrar:
find /SYSADMIT/* -type f -not -newermt “AAAA:MM:DD HH:MI:SS” -delete
Fuente: https://www.sysadmit.com/2019/08/linux-borrar-ficheros-por-fecha.html