Linux est très puissant, notamment dans les commandes de recherche : on peut facilement rechercher et supprimer les fichiers qui ne sont plus utilisés depuis plus de XX jours.

Pour un besoin perso je cherchais à supprimer certains fichiers d’un serveur. J’avais 80% du script, que voici :

1
find /home/dossier -type f -iname "*.mymailserver*" -mtime +45 -print -delete

Cette commande permet de rechercher dans le dossier /home/dossier tous les fichiers qui n’ont pas été modifiés depuis 45 jours, dont le nom contient au moins .mymailserver, et de les supprimer.

Attention : il n’y a pas de confirmation avant la suppression, c’est radical ! Pour visualiser les fichiers concernés sans les supprimer, il est possible de remplacer -delete par | more.

Plus difficile maintenant : je voulais faire la même chose, mais uniquement pour les fichiers présents dans les sous-dossiers .Spam. J’avais demandé sur Twitter, et c’est @lgnap qui m’a donné le petit truc en plus : je me demande encore pourquoi je n’y avais pas pensé !

Il faut rajouter une clause grep dans la commande find, et ça donne le résultat suivant.

1
find /home/dossier -type f -iname "*.mymailserver*" -mtime +45 -exec grep -q ".Spam" {} \; -print -delete

Enfin, rien n’empêche d’intégrer la commande dans un script, pour pouvoir la planifier via crontab et loguer le résultat.

Recherche et suppression d'anciens fichiers avec bash sur Linux

Création d'un script pour planifier la suppression de façon récurrente

Note : comme toujours il existe plusieurs commandes pour arriver au même résultat, celle-ci me convenait.