Je cherche un fichier bash qui pourrait m'éffacer dans un répertoire les fichiers qui sont plus de 3 mois.
Je pourrais le lancer avec cron tous les mois.
Explication :
- find + chemin : utilitaire te permettant de faire des recherches de fichier dans le chemin spécifié
- -name "*.extension" : ne faire une recherche que sur les fichiers du type spécifié
- -ctime +n : nombre de jour de ton fichier
- -exec : exécuter sur chacun des fichiers trouvés la commande en paramètre et substituer "{}" par le nom du fichier.
Je te recommande de passer tout d'abord la commande suivante :
find /chemin/de/tes/fichiers -name "*.extension_que_tu_veux" -ctime +90
De vérifier que ça correspond à ta demande et après seulement lancer la première. Si tu veux éventuellement confirmer la suppression de chaque fichier, tu peux aussi remplacer "exec" par "ok" :
find /chemin/de/tes/fichiers -name "*.extension_que_tu_veux" -ctime +90 -ok rm -f {} \;
Je pense que tu devrais utiliser plutôt -mtime +90, à savoir le temps depuis lequel le fichier n'a pas été modifié, plutôt que le temps depuis lequel le statut du fichier n'a pas été modifié.
Attention, le résultat des 2 options n'est pas le même, tu peux le vérifier facilement sur tes fichiers.
Extrait du "man" de "find" :
-ctime n : dernière modification du statut du fichier il y a n*24 heures.
-mtime n : fichier dont les données ont été modifiées il y a n*24 heures.
Je précise que "find" est une commande externe, et n'est pas une commande intégrée à bash. Je ne pense pas que tu aies besoin de mettre cette commande dans un fichier.
Si tu veux la faire exécuter automatiquement à intervalle régulier, tu peux la mettre directement dans la crontab. On édite la crontab avec "crontab -e" (on se retrouve par défaut sous "vi", attention ce n'est pas facile à utiliser si on débute). Tu peux aussi créer un fichier au format crontab, que tu soumets ensuite à cron avec crontab fichier (fais man crontab pour voir les possibilités).
Pour la mettre dans un fichier, tu crées par exemple le fichier "purge.sh", dans lequel tu écris la commande find, et ensuite tu rends le fichier exécutable avec chmod +x purge.sh.
Pour apprendre les commandes disponibles sous Linux, regarde des didacticiels sur le Net, il y en a plein, Google t'aidera à trouver.
# find
Posté par yannig (site web personnel) . Évalué à 8.
Explication :
- find + chemin : utilitaire te permettant de faire des recherches de fichier dans le chemin spécifié
- -name "*.extension" : ne faire une recherche que sur les fichiers du type spécifié
- -ctime +n : nombre de jour de ton fichier
- -exec : exécuter sur chacun des fichiers trouvés la commande en paramètre et substituer "{}" par le nom du fichier.
Je te recommande de passer tout d'abord la commande suivante :
find /chemin/de/tes/fichiers -name "*.extension_que_tu_veux" -ctime +90
De vérifier que ça correspond à ta demande et après seulement lancer la première. Si tu veux éventuellement confirmer la suppression de chaque fichier, tu peux aussi remplacer "exec" par "ok" :
find /chemin/de/tes/fichiers -name "*.extension_que_tu_veux" -ctime +90 -ok rm -f {} \;
Bonne journée.
[^] # Re: find
Posté par Olivier Jeannet . Évalué à 2.
Je pense que tu devrais utiliser plutôt -mtime +90, à savoir le temps depuis lequel le fichier n'a pas été modifié, plutôt que le temps depuis lequel le statut du fichier n'a pas été modifié.
Attention, le résultat des 2 options n'est pas le même, tu peux le vérifier facilement sur tes fichiers.
Extrait du "man" de "find" :
-ctime n : dernière modification du statut du fichier il y a n*24 heures.
-mtime n : fichier dont les données ont été modifiées il y a n*24 heures.
[^] # Re: find
Posté par Stéphane HUMBERT . Évalué à 1.
c'est ce qu'il me faut
mais je fais qu'oi avec ça.....!
Sa fait 3 mois que je suis sur linux, alors les commandes shell je ne les connais pas.
Je pense qu'avec ça il faut faire une fichier bash.
@+
Stef
[^] # Re: find
Posté par Olivier Jeannet . Évalué à 2.
Si tu veux la faire exécuter automatiquement à intervalle régulier, tu peux la mettre directement dans la crontab. On édite la crontab avec "crontab -e" (on se retrouve par défaut sous "vi", attention ce n'est pas facile à utiliser si on débute). Tu peux aussi créer un fichier au format crontab, que tu soumets ensuite à cron avec crontab fichier (fais man crontab pour voir les possibilités).
Pour la mettre dans un fichier, tu crées par exemple le fichier "purge.sh", dans lequel tu écris la commande find, et ensuite tu rends le fichier exécutable avec chmod +x purge.sh.
Pour apprendre les commandes disponibles sous Linux, regarde des didacticiels sur le Net, il y en a plein, Google t'aidera à trouver.
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.