J'ai un répertoire sur ma machine, je le considère comme mon propre répertoire tmp
, mais il se trouve dans mon répertoire ~
. Et je veux faire en sorte que mon système supprime tous les fichiers tous les 3 heures (tout en conservant intactes la structure de répertoires, mais en supprimant tous les fichiers de tous les niveaux des répertoires) ce répertoire de plus d'une journée.
J'utilise Ubuntu GNOME 15.10 avec GNOME 3.18, est-ce possible? Et si oui, comment? Je voudrais que cela soit entièrement automatisé sans aucune interaction utilisateur nécessaire. Cela devrait être quelque chose qui démarre automatiquement quand je me connecte, donc je n’aurais pas besoin d’exécuter quelque chose à chaque démarrage.
Utiliser find
:
find ~/tmp -type f -mtime +0 -delete
~/tmp
est le répertoire à rechercher de manière récursive, changez-le en conséquence
-type f
recherchera uniquement les fichiers
-mtime +0
qui correspondra à un fichier s'il a été modifié pour la dernière fois il y a un jour ou plus
-delete
supprimera simplement le ou les fichiers correspondants
Ici, la capture est -mtime +0
, la plupart pourraient penser à utiliser -mtime +1
mais find
ignorera toute fraction de temps lors du calcul du nombre de jours. Ainsi, -mtime +1
correspondra à un fichier si la dernière modification a été effectuée il y a au moins 2 jours.
En citant man find
, -mtime
a la même convention temporelle que -atime
:
-au moment n
Le fichier a été consulté pour la dernière fois il y a n * 24 heures. Lorsque find a déterminé combien de fois le fichier avait été accédé il y a 24 heures, toute fraction est ignorée. Par conséquent, pour correspondre à -atime +1, un fichier doit avoir été utilisé il y a au moins deux jours.
Notez également que si vous voulez de la précision, vous devriez regarder l'option -mmin
de find
pour indiquer le temps en minutes.
Pour l'exécuter périodiquement après 3 heures, vous pouvez ajouter une entrée cron
.
Exécutez crontab -e
et ajoutez:
00 */3 * * * /usr/bin/find ~/tmp -type f -mtime +0 -delete
Utilisation de zsh
pour supprimer les fichiers:
rm ~/tmp/**/*(.-m+0)
Ajout à cron
:
00 */3 * * * /usr/bin/zsh -c 'rm ~/tmp/**/*(.-m+0)'
Vous devriez pouvoir supprimer tous les fichiers de plus d'un jour dans /home/username/directory
et tous les répertoires ci-dessous avec:
find /home/username/directory -type f -mtime +1 -delete
Et pour planifier cette commande toutes les trois heures, définissez-la comme un travail cron:
crontab -e
Puis à l'intérieur de la crontab:
0 */3 * * * find /home/username/directory -type f -mtime +1 -delete
Qui exécute votre commande toutes les trois heures à l'heure (c'est-à-dire la minute 0), donc 3 h, 6 h, etc.
Allez dans le cron
et crontab
manpages
pour plus d'informations à leur sujet.