¿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?

leche azul
fuente
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).

Paŭlo Ebermann
fuente
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.

Aaron D. Marasco
fuente
Esta es definitivamente la solución más elegante, pero prefiero la portabilidad de find.
bloudermilk