Búsqueda de sitios web

Busque y elimine archivos con más de n días en Linux


En esta guía, veremos cómo eliminar archivos de más de n días en Linux. El caso de uso más común para esto es eliminar registros rotados que tengan más de una cierta cantidad de días o eliminar copias de seguridad antiguas para liberar espacio para copias de seguridad más recientes.

Entonces consideremos un ejemplo. Buscaré archivos en /var/log con una extensión de .tar.gz con más de 7 días y elimínelos. Usaré el comando find  para buscar los archivos.

# find /var/log/ -name *.gz -mtime +7 -exec rm -rf {} \;

La opción -mtime se utiliza para especificar la última modificación del archivo; es decir, hace n*24 horas. +7 significa más de 7 días.

La opción -exec se utiliza para ejecutar un comando en buscar. El comando que se ejecuta aquí es rm -f

El último {} \; significa recorrer la lista de elementos.

Si desea enumerar los archivos sin eliminarlos, use el comando:

# cd /var/log
# find . -type f -mtime +7d -ls

Para buscar y eliminar archivos mayores a un tamaño específico y con más de n días de antigüedad, use la opción -size : por ejemplo:

# find /var/log/ -name *.gz -mtime +7  -size +1G -exec rm -rf {} \;

Tenga en cuenta que es posible guardar la lista de archivos en una variable antes de eliminarlos.

# file_list=`find . -name *.gz -type f -mtime +7`
# for i in ${file_list[@]}; do
  echo "Deleting $i file"
  rm $i
done

Para obtener más opciones de búsqueda, consulte su página de manual:

# man find

Más guías sobre la administración del sistema Linux:

  • Ejecución de aplicaciones GUI de Linux en el subsistema de Windows para Linux (WSL)
  • Cómo ejecutar la terminal Linux en el navegador web usando Wetty
  • Modifique las configuraciones de grub.cfg en Linux usando grubby