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?


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.)


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.


C'est certainement la solution la plus élégante, mais je préfère la portabilité de find.
bloudermilk
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.