Bonjour,
Je dois créer un script qui dans un certain nombre de dossiers prédéfinis, efface tous les fichiers logs qui sont vieux de, par exemple plus de 15 jours.
Leur syntaxe est la suivante :
nom_log.logs.date => testlog.logs.2011-04-24
J'ai donc créé le script suivant (les tests à la fin ne sont bien évidemment pas complets, ne pas en tenir compte) :
J'arrive à extraire l'année, le mois et le jour de chaque fichier. Mais mon problème est que je n'arrive pas à établir de règle efficace concernant les tests à faire sur les "diff_year, diff_month, diff_day" pour l'effacement ou non des fichiers, en prenant en compte le changement d'un mois à l'autre, d'une année à une autre ... ( on ne peut pas simplement faire un diff_year!=0 et tout effacer, si on lance le script le 1er janvier et que le log date du 31 décembre).
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29 #!/bin/bash year=$(date '+%Y') month=$(date '+%m') day=$(date '+%d') echo -e "Date d\'aujourd\'hui : $day / $month / $year\n" for fic in * do #Année/Mois/Jour du fichier de log year_file=$(echo $fic | cut -f3 -d . | cut -f1 -d -) month_file=$(echo $fic | cut -f3 -d . | cut -f2 -d -) day_file=$(echo $fic | cut -f3 -d . | cut -f3 -d -) let "diff_year=year-year_file" let "diff_month=month-month_file" let "diff_day=day-day_file" #test chaine vide pour les fichiers non logs if [ -z $year_file ] ; then echo -e "$fic : Fichier à conserver\n" elif (($diff_year !=0)); then echo -e "$fic : Fichier à supprimer\n" else echo -e "$fic : Fichier à conserver\n" fi done
Voilà voilà, si quelqu'un a une solution ou une autre manière de procéder ...
Merci !
Partager