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

Voilà voilà, si quelqu'un a une solution ou une autre manière de procéder ...

Merci !