harmonisation des extensions de fichier, et modification de l'extraction du nom de perso pour fonctionner quand il y a plusieurs fichiers de log.

This commit is contained in:
Zatalyz 2022-02-27 16:58:09 +01:00
parent 4a67f35cd3
commit c0c6f8e718

View file

@ -65,10 +65,13 @@ fi
# TODO truc améliorable : arriver à gérer plusieurs persos
if [ -z "$4" ]
then
myfunc() {
basename "$foldersource"/* .txt | cut -d_ -f2 | uniq
for file1 in "$foldersource"/*
do
myfunc() {
basename "$file1" .txt | cut -d_ -f2 | uniq
}
perso="$(myfunc)"
done
else perso="$4"
fi
# Avoir une variable avec la majuscule au pseudo
@ -113,25 +116,25 @@ for logname in "$tmpfolder"/logcomplet_"$perso".txt
# On va faire un seul gros fichier par année
for year in {2009..2025} ; do
#echo "${year}"
grep "^${year}/" "$logname" >> "$yearfolder"/"${year}".log
grep "^${year}/" "$logname" >> "$yearfolder"/"${year}".txt
# Effacer les fichiers vides
[ -s "$yearfolder"/"${year}".log ] || rm -f "$yearfolder"/"${year}".log
[ -s "$yearfolder"/"${year}".txt ] || rm -f "$yearfolder"/"${year}".txt
#echo "${year} traitée"
# On vérifie si le fichier d'année existe et on ne traite que celles qui existent
if [ -f "$yearfolder"/"${year}".log ] ; then
if [ -f "$yearfolder"/"${year}".txt ] ; then
# Puis on va faire un fichier par mois
for month in {01..12} ; do
# echo "${year}/${month} en cours"
grep "^${year}/${month}" "$yearfolder"/"${year}".log > "$monthfolder"/"${year}_${month}".log
[ -s "$monthfolder"/"${year}_${month}".log ] || rm -f "$monthfolder"/"${year}_${month}".log
grep "^${year}/${month}" "$yearfolder"/"${year}".txt > "$monthfolder"/"${year}_${month}".txt
[ -s "$monthfolder"/"${year}_${month}".txt ] || rm -f "$monthfolder"/"${year}_${month}".txt
# On vérifie si le fichier année/mois existe et on ne traite que ceux qui existent
if [ -f "$monthfolder"/"${year}_${month}".log ] ; then
#echo "$monthfolder"/"${year}_${month}".log
if [ -f "$monthfolder"/"${year}_${month}".txt ] ; then
#echo "$monthfolder"/"${year}_${month}".txt
# Puis un fichier par jour
for day in {01..31} ; do
#echo "${year}/${month}/${day} en cours"
grep "^${year}/${month}/${day}" "$monthfolder"/"${year}_${month}".log > "$dayfolder"/log_"$perso"_"${year}_${month}_${day}".log
[ -s "$dayfolder"/log_"$perso"_"${year}_${month}_${day}".log ] || rm -f "$dayfolder"/log_"$perso"_"${year}_${month}_${day}".log
grep "^${year}/${month}/${day}" "$monthfolder"/"${year}_${month}".txt > "$dayfolder"/log_"$perso"_"${year}_${month}_${day}".txt
[ -s "$dayfolder"/log_"$perso"_"${year}_${month}_${day}".txt ] || rm -f "$dayfolder"/log_"$perso"_"${year}_${month}_${day}".txt
#echo "${year}/${month}/${day} traité"
done
fi
@ -143,16 +146,16 @@ for logname in "$tmpfolder"/logcomplet_"$perso".txt
fi
done
#Tri des fichiers dans des dossiers du type Dossier_trié/année/mois/log.log
#Tri des fichiers dans des dossiers du type Dossier_trié/année/mois/log.txt
# On récupère la date, en formattant comme pour les logs
for f in $dayfolder/*.log
for f in $dayfolder/*.txt
do
year=${f: -14:4}
month=${f: -9:2}
day=${f: -6:2}
# On se fait une jolie variable qui imite la partie datée du nom des fichiers de log
log=log_"$perso"_"${year}_${month}_${day}.log"
log=log_"$perso"_"${year}_${month}_${day}.txt"
# on créé le dossier de chaque mois dans les archives s'il n'existe pas
mkdir -p "$folderrawsorted"/"$year"/"$month/"
# on déplace ces logs dans leur archive
@ -166,15 +169,15 @@ echo "Les fichiers ont été découpés et rangés"
#############
# Alors là, la misère... car on a des fichiers dans des sous-dossiers.
# Le plus simple : tout remettre dans un dossier en vrac et traiter à partir de là.
find "$folderrawsorted" -maxdepth 4 -name '*.log' -exec cp {} "$tmparoundfolder"/ \;
find "$folderrawsorted" -maxdepth 4 -name '*.txt' -exec cp {} "$tmparoundfolder"/ \;
for mylog in "$tmparoundfolder/log"*.log
for mylog in "$tmparoundfolder/log"*.txt
do
justnamelog() {
basename -s .log "$mylog"
basename -s .txt "$mylog"
}
namelog="$(justnamelog)"
sourcelog="$tmparoundfolder/${namelog}.log"
sourcelog="$tmparoundfolder/${namelog}.txt"
finallog="$tmparoundfolder2/${namelog}_alentours.txt"
#./1analyse_new_logryzom.sh $sourcelog $finallog
# Analyse des logs proprement dites
@ -222,7 +225,7 @@ done
rm -r "$tmpfolder"
# On compte et vérifie les fichiers
count=$(find $folderrawsorted -maxdepth 4 -name '*.log' | wc -l)
count=$(find $folderrawsorted -maxdepth 4 -name '*.txt' | wc -l)
echo "Les sources sont triées en $count fichiers dans $folderrawsorted. Contrôlez ce nombre sur controlline_$perso.txt"
countaround=$(find $folderaround -maxdepth 4 -name '*.txt' | wc -l)
echo "$countaround fichiers ont été nettoyés et rangés dans $folderaround. "