Tutoriales

Cómo encontrar y eliminar archivos de más de X días en Linux

Como sabe, los volcados de registro a veces se comparten entre los usuarios para su posterior procesamiento. Algunas personas almacenan registros para su uso posterior, incluso después de terminar el trabajo.

En lugar de volverse útil, se convirtió en una gran basura que debe eliminarse del sistema.

Cuando ve el archivo, hay una gran cantidad de archivos disponibles, de los cuales desea eliminar los archivos que tienen X días o posiblemente X veces más que la última vez que accedió o modificó el archivo.

Si tiene necesidades similares, entonces creo que este artículo definitivamente lo ayudará.

¿Qué comando utilizó para realizar esta tarea?

En este caso, su mejor opción es usar el comando de búsqueda, que primero encontrará el archivo en función de una de las siguientes opciones: -amin, -atime, -cmin, -ctime, -mmin, y -mtime.

Una vez que el comando de búsqueda encuentra el archivo según los parámetros que configuró, puede usar -delete opción o uso xargs Eliminar archivos del sistema.

Sencillo, ¿verdad? Echemos un vistazo a algunos comandos basados ​​en escenas.

Buscar y eliminar archivos con más de X o N días

Supongamos que quiero buscar y eliminar archivos que no se han utilizado durante más de 7 días.En este caso diría -atime Es hora de necesitarlo, así que primero le daré una introducción a la sintaxis del comando. Luego invocaremos el comando en el sistema.

$ find /specify-path/ -atime +N
  • find : Todos conocen el programa de búsqueda
  • /specify/path/ : define la ruta para ejecutar el comando de búsqueda
  • -atime : se accedió al archivo hace menos de, más de o hace exactamente 24 horas
  • +N : Mencione el número de días en el formato de hoy

El comando anterior mostrará los nombres de archivo a los que no se ha accedido durante cuánto tiempo N días.

Si está seguro del comportamiento del comando anterior, debe agregar más líneas al comando predeterminado para ejecutar funcion rm Al filtrar los resultados, una vez que los archivos se eliminen del sistema, se imprimirán sus nombres de archivo.

$ find /specify-path/ -atime +N -exec rm {} \; -print

Siempre se recomienda que primero verifique los resultados del comando de búsqueda y luego ejecute la función rm para evitar la pérdida de datos.

Para explicarte mejor, déjame crear un par de archivos de más de 7 días, usando touch OrdenarEl comando .touch generalmente se usa para crear nuevos archivos, pero también puede usarlo para cambiar los tiempos de acceso y modificación.

Sin embargo, podemos hacer esto con archivos antiguos, pero en lugar de hacer esto, Crear un nuevo archivo usar -t (marca de tiempo) usando el siguiente comando.

$ touch -t 202208281024 sample_A
$ touch -t 202208291024 sample_B
$ touch -t 202208301024 sample_C
$ touch -t 202208311024 sample_D
$ touch -t 202209011024 sample_E
$ touch -t 202209021024 sample_F
$ touch -t 202209031024 sample_G
$ touch -t 202209041024 sample_H

Si desea aprender a decodificar marcas de tiempo, consulte este artículo:

Después de eso, ejecute parte del comando para ver el nombre del archivo y, una vez que esté satisfecho con el nombre del archivo, agregue otra parte del comando para ver el resultado.

$ find . -atime +7

A continuación se muestra la salida del comando anterior.

resultado deseado

Si desea estar más seguro acerca de la salida, puede utilizar stat Ordenar Verifique la última hora de acceso ejecutando:

Use el comando stat para verificar los resultados
Use el comando stat para verificar los resultados

Después de determinar el resultado, puede ejecutar el comando Borrar archivos Use el siguiente comando de su sistema, volverá a encontrar el nombre de archivo en función de su línea de tiempo, luego eliminará el archivo e imprimirá el nombre de archivo.

$ find . -atime +7 -exec rm {} \; -print

Comportamiento del comando anterior:

Eliminar archivos a los que no se haya accedido durante más de 7 días
Eliminar archivos a los que no se haya accedido durante más de 7 días

Puede hacer que el comando anterior sea más sólido agregando tipos de archivos.

Como sabe, estamos buscando archivos normales que no se hayan utilizado durante más de 7 días, y no quiero tocar ningún directorio al que no se haya accedido en una semana. En ese caso, definitivamente necesito mencionar explícitamente el tipo de archivo.

$ find . -atime +7 -type f -exec rm {} \; -print

Alternativamente, también puede usar -newerXY Opción para eliminar archivos según la fecha que especifique. XY Debe ser reemplazado con los siguientes caracteres: 'a'(derecho de uso),'B'(nacido),'c'(cambios de inodo),'m'(Modificado),'t'(tiempo) Referirse a.

Puede eliminar archivos según sus preferencias usando el formato de fecha general siguiendo la sintaxis a continuación.

$ find /specify-path/ -type f -not -newerat "YYYY-MM-DD HH:MI:SS" -delete -print

Supongamos que quiero eliminar todos los archivos a los que he accedido antes 2022-08-31 usar -no y -newerat opciones

Para esta situación, se me ocurrió un comando que me parece perfecto. Sé que estás preguntando por el tiempo, pero puedes evitarlo.

$ find . -not -newerat "2022-08-31" -delete -print

El comportamiento del comando anterior.

Use -newerXY para eliminar archivos
Use -newerXY para eliminar archivos

Encuentra y elimina archivos modificados en X minutos

A veces, es posible que desee eliminar archivos en función del momento de la modificación, por ejemplo, para eliminar todos los archivos del directorio actual al que se ha accedido en los últimos X minutos.

Supongamos que quiero eliminar archivos que se han modificado en los últimos 30 minutos. En este punto, debe ejecutar el siguiente comando, que eliminará todos los archivos modificados recientemente.

$ find . -mmin -30 -type f -delete -print

El comportamiento del comando anterior.

Eliminar archivos modificados en 30 minutos
Eliminar archivos modificados en 30 minutos

En lugar de eliminar el archivo directamente, primero puede verificar el resultado del comando de búsqueda llamando al siguiente código. Después de eso, puede llamar al comando anterior para eliminar el archivo.

$ find . -mmin -30 

Incluso puede hacer que su salida sea concisa usando –mmmin como condicional, pero como hago –mmmin como condicional? Un ejemplo es sencillo.

Suponga que desea buscar archivos modificados en los últimos 50 minutos de un intervalo de tiempo y, dentro del mismo intervalo de tiempo, también desea conocer los archivos modificados en los últimos 30 minutos.

En este caso debes usar el siguiente comando:

$ find . -mmin -50 -mmin +30

El comportamiento del comando anterior.

Eliminar archivos con múltiples criterios de tiempo
Eliminar archivos con múltiples criterios de tiempo

Use indicaciones para buscar y eliminar archivos con más de X días

Inseguro para correr rm o usar -delete opciones hasta que esté seguro de que encontró el resultado correcto para usted.

A menudo cometemos errores al ingresar nombres de archivo o usar parámetros incorrectos, lo que eliminará todos los archivos en los subdirectorios actual y, porque el comando de búsqueda verifica recursivamente el patrón especificado a lo largo de la ruta especificada.

Estoy seguro de que entiendes lo que quiero decir.Entonces es mejor usar el resultado de la verificación primero -Impresión, De lo contrario, puede usar el siguiente comando que le pedirá permiso antes de eliminarlo del sistema.

$ find . -atime +7 -exec rm -i {} \; -print

El comportamiento del comando anterior.

Eliminar el archivo después de confirmar
Eliminar el archivo después de confirmar

envolver

¡Eso es todo por ahora!

Bueno, en este artículo, ha aprendido a usar -atime y varias otras opciones para buscar y eliminar archivos a los que no se ha accedido durante mucho tiempo.

Puede obtener más información sobre el comando de búsqueda en el manual, que puede leer escribiendo un comando simple en la terminal man find.

Si este artículo fue útil para usted, deje un comentario sobre su experiencia. Con esto doy por concluido este post. Volveremos a encontrarnos con un nuevo tema. ¡Hasta ahora, adiós!

LEER  Cómo crear scripts para comandos de Linux

Publicaciones relacionadas

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Botón volver arriba