Suppression de fichiers par âge


16

Existe-t-il une commande pour supprimer tous les fichiers d'un répertoire qui n'ont pas été modifiés depuis N jours? J'ai besoin de nettoyer d'anciens journaux.

Réponses:


24

Cela supprimera tous les fichiers de plus de 5 jours, vous pouvez également y mettre un -name '*log'pour être plus précis et vous pouvez également spécifier un maxdepthdans la commande find.

find /some/dir -type f -mtime +5 -delete


5
Bien que les administrateurs système sages fassent un essai avec -lsau lieu de -deletes'assurer que cela ne supprimera rien qu'ils voulaient garder. Oui, parlant d'expérience ici.
Shadur

2
Parlant d'expérience, ils vérifient également leur chemin. ou pas, puisque j'ai fait une fois la / some/dir/version. :(
Hennes

3

Avec zshet (.m+n) qualificatifs glob : .sélectionne uniquement les fichiers normaux, m+nsélectionne les fichiers modifiés il y a plus de n jours;
Par exemple, listez les fichiers du répertoire actuel qui ont été modifiés il y a plus de 9 jours:

print -rl -- *(.m+9)

ajouter Dpour inclure des fichiers de points:

print -rl -- *(D.m+9)

ou si vous voulez recurse (et listez par exemple uniquement les fichiers se terminant par .log):

setopt extendedglob
print -rl -- **/*.log(.m+9)

remplacez print -rlpar rmsi vous êtes satisfait du résultat; mais vous devrez peut-être utiliser zargssi vous avez beaucoup de fichiers (pour éviter une liste d'arguments trop longue ):

autoload zargs
zargs ./**/*(.m+9) -- rm
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.