Comment puis-je supprimer tous les fichiers d'un dossier auxquels on n'a pas accédé depuis un certain temps?

14

Je voudrais exécuter un travail cron nocturne qui supprime tous les fichiers d'un dossier qui n'ont pas été consultés depuis une semaine ou plus. Quelle est la façon la plus efficace de le faire en bash?

bloudermilk
la source
2
findpeut filtrer en fonction de l'heure. La «justesse» de atime dépend au moins de la configuration (voir noatime).

Réponses:

20

Vous voulez l' findoutil .

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

(Cela supprimera tous les fichiers ( uniquement les fichiers normaux , pas de canaux, les périphériques spéciaux, les répertoires, les liens symboliques) dans le dossier donné et tous les sous-répertoires (récursivement) où le dernier temps d'accès est plus long qu'il y a 7 jours.)

Paŭlo Ebermann
la source
6
Vous voudrez peut-être y ajouter -type fpour vous assurer qu'il supprime uniquement les fichiers, pas les répertoires entiers.
Shadur
3

Vous voudrez peut-être vérifier ce tmpwatchqui peut être mis dans un travail cron. Pas besoin de rouler avec find. Sur RHEL, c'est dans le tmpwatchRPM.

Aaron D. Marasco
la source
C'est certainement la solution la plus élégante, mais je préfère la portabilité de find.
bloudermilk