Supprimer des fichiers de plus d'un an sous Linux

18

Au moment où, de nombreux fichiers sont encore sur mon système et je n'en ai plus besoin, alors comment supprimer tous les fichiers qui ont au moins un an?

Maythux
la source

Réponses:

34

Vous pouvez le faire avec cette commande

find /path/to/files* -mtime +365 -exec rm {} \;

Certains expliquent

/path/to/files* est le chemin d'accès aux fichiers.

-mtimeest utilisé pour spécifier le nombre de jours d'ancienneté du fichier. +365 trouvera les fichiers de plus de 365 jours, soit un an

-exec vous permet de passer une commande telle que rm.


Modifier Merci à @Oli note -> vous pouvez le faire en:

find /path/to/files* -mtime +365 -delete
Maythux
la source
7
Vous devez toujours citer le {}in -exec(pour qu'il soit lu -exec rm "{}" \;). Cela garantit que les espaces sont gérés correctement ... Et vous pouvez simplement utiliser la -deletefonction à la place de -exec.
Oli
1
@Oli Huh ??? (Ce que vous avez dit ne peut pas être vrai, étant donné que la coquille se "{}"transforme {}avant de la passer à findla première place; puis la findremplace. La citation {}est suggérée au cas où {et }eux-mêmes peuvent parfois être traités spécialement par la coquille - qui n'a rien à faire avec des espaces vides. Et souvent, il {}n'est pas nécessaire de les citer. Je ne peux penser à aucune situation, du moins lors de l'invocation de find à partir d'un shell de style Bourne, où {}, sans rien à l'intérieur, apparaissant seul comme argument, doivent être cités. Pouvez-vous?)
Eliah Kagan
1
@EliahKagan Ouais, il s'avère que les findpoignées s'échappent pour elles-mêmes, mais ce n'est pas une mauvaise habitude d'être dans le script. Ça ne fait pas mal.
Oli
2
@Oli Mais cela n'aide pas, même en principe. S'il findne gérait pas l'échappement, "{}"aurait toujours le même effet que {}--juste ni l'un ni l'autre ne fonctionnerait, au lieu que les deux fonctionnent. Cela {}et "{}"le même comportement ne sont pas - et ne peuvent pas être - dus à une caractéristique spéciale de find. Confondre ce qui est développé par le shell avec ce qui est développé par un autre programme est une mauvaise habitude. Nous faisons tous cette erreur de temps en temps, mais c'est toujours une erreur - pas une meilleure pratique. (On pourrait toujours citer {}pour aider les humains à voir que ce n'est pas un modèle d'expansion d'accolade, mais cela n'a rien à voir avec le fractionnement des mots.)
Eliah Kagan