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