¿Cómo puedo eliminar todos los archivos en una carpeta a la que no se ha accedido en un período de tiempo determinado?


14

Me gustaría ejecutar un trabajo cron nocturno que elimine todos los archivos en una carpeta a la que no se haya accedido en una semana o más. ¿Cuál es la forma más eficiente de hacer esto en bash?


2
findpuede filtrar en función de atime. La "corrección" de atime depende de la configuración (ver noatime), como mínimo.

Respuestas:


20

Tú quieres la findherramienta .

find folder -depth -type f -atime +7 -delete

(Esto eliminará todos los archivos ( solo los normales , sin canalizaciones, dispositivos especiales, directorios, enlaces simbólicos) en la carpeta dada y todos los subdirectorios (recursivamente) donde el último tiempo de acceso es más largo que hace 7 días).


66
Es posible que desee agregar -type fallí para asegurarse de que solo elimine archivos, no directorios completos.
Shadur

3

Es posible que desee verificar tmpwatchqué se puede poner en un trabajo cron. No hay necesidad de rodar tu propio confind . En RHEL está en las tmpwatchRPM.


Esta es definitivamente la solución más elegante, pero prefiero la portabilidad de find.
bloudermilk
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.