Bonjour,
Je me suis absenté un bon moment, je reviens un peu sur le forum.
N'etant pas a l'aise avec la programmation, j'ai utilisé ChatGPT pour générer du code. Ca marche plutot pas mal.
Par contre, j'ai un souci avec le resultat.
CE QUE LE SCRIPT FAIT:
Le script doit chercher des suites de lettres dans un dossier ou se trouve des fichiers texte.
dans l'exemple que je montre ci-dessous, j'ai un dossier avec 48 fichiers texte. le script scanne les 48 fichiers, qui m'affiche le nombre d'occurences trouvées (et les sauvegarde dans un fichier texte)
LE PROBLEME:
Quand le script scanne les fichiers, ou aucune occurence n'est trouvée, dans le terminal, je perds la ligne "Recherche:[1/2]. Trouvés: [96]. Progression: [100%] [48/48] Analyse: nom_fichier_analysé
Je n'arrive pas a modifier le script pour afficher toute de même cette ligne (bien sur vu qu'aucune occurence n'est trouvée, les valeurs seront Recherche: [2/2]. Trouvés: [0]. Progression: [100%] [48/48] Analyse: nom_fichier_analysé
Je joint une copie ecran pour simplifier mes explications.
Je joint egalement la partie du code qui semble poser le probleme
Merci a celui/celle ou ceux qui voudront bien jeter un oeil.
Je me suis absenté un bon moment, je reviens un peu sur le forum.
N'etant pas a l'aise avec la programmation, j'ai utilisé ChatGPT pour générer du code. Ca marche plutot pas mal.
Par contre, j'ai un souci avec le resultat.
CE QUE LE SCRIPT FAIT:
Le script doit chercher des suites de lettres dans un dossier ou se trouve des fichiers texte.
dans l'exemple que je montre ci-dessous, j'ai un dossier avec 48 fichiers texte. le script scanne les 48 fichiers, qui m'affiche le nombre d'occurences trouvées (et les sauvegarde dans un fichier texte)
LE PROBLEME:
Quand le script scanne les fichiers, ou aucune occurence n'est trouvée, dans le terminal, je perds la ligne "Recherche:[1/2]. Trouvés: [96]. Progression: [100%] [48/48] Analyse: nom_fichier_analysé
Je n'arrive pas a modifier le script pour afficher toute de même cette ligne (bien sur vu qu'aucune occurence n'est trouvée, les valeurs seront Recherche: [2/2]. Trouvés: [0]. Progression: [100%] [48/48] Analyse: nom_fichier_analysé
Je joint une copie ecran pour simplifier mes explications.
Je joint egalement la partie du code qui semble poser le probleme
Merci a celui/celle ou ceux qui voudront bien jeter un oeil.
# Initialisation des compteurs
current_duo=0
total_occurrences=0 # Réinitialiser le compteur total d'occurrences
# Initialisation du compteur du pourcentage %
pourcent="0"
# Lire chaque ligne du fichier "mots.txt" et traiter les lettres de chaque ligne
while IFS= read -r ligne
do
current_duo=$((current_duo + 1))
echo "" >> "$resultats_file"
echo "••••••••••••••••••••••••••••••••••••••••••••••••••••" >> "$resultats_file"
echo "•••>>> $ligne" >> "$resultats_file"
formatted_line=""
length=${#ligne}
for ((i=0; i<length; i++)); do
formatted_line="${formatted_line}[${ligne:i:1}]"
if [ $i -lt $(($length-1)) ]; then
formatted_line="${formatted_line} + "
fi
done
echo "Recherche des MULTI-LETTRES ${bg_blue}[$current_duo/$num_duos]${reset_color} >>> ${text_blanc}$formatted_line${reset_color}"
start_time=$(date +%s)
# Construire un motif de recherche pour chaque lettre de la séquence
search_pattern=""
for letter in $(echo "$ligne" | sed 's/ //g' | sed 's/./&.*/g')
do
search_pattern="${search_pattern}.*$letter"
done
fichiers_trouves=$(rg -lP "$search_pattern" "$dossier_recherche")
occurrences_trouvees=0 # Réinitialiser le compteur d'occurrences pour cette séquence
for fichier in $fichiers_trouves
do
occurrences=$(rg -oP "$search_pattern" "$fichier")
if [ -n "$occurrences" ]; then
filtered_occurrences=$(echo "$occurrences" | awk -v len="$longueur_occurence" 'length <= len')
if [ -n "$filtered_occurrences" ]; then
echo "$filtered_occurrences" | sed 's/^/ /' >> "$resultats_file"
occurrences_trouvees=$((occurrences_trouvees + $(echo "$filtered_occurrences" | wc -l)))
# Incrémenter le compteur de fichiers traités
current_file=$((current_file + 1))
# Ajout de la taille du fichier à la sortie
taille_fichier=$(du -h "$fichier" | cut -f1)
# formate le pourcentage
pourcent=$(printf "%.2f" $((current_file * 10000 / $num_mots_index))e-2)
# Nom du fichier
fichier_partie=$(basename "$fichier")
echo -ne "Recherche:${bg_blue}[$current_duo/$num_duos]${reset_color} Trouvé(s):${color}[$occurrences_trouvees]${reset_color} Progression:[$pourcent%] ${bg_black}[$current_file/$num_mots_index]${reset_color} Analyse:$fichier_partie / $taille_fichier\033[0K\r"
fi
fi
done
current_file=0
total_occurrences=$((total_occurrences + occurrences_trouvees)) # Ajouter les occurrences trouvées pour cette séquence
end_time=$(date +%s)
time_taken=$((end_time - start_time))
time_taken_minutes=$((time_taken / 60))
echo ""
echo "Trouvé: ${bg_blue}[$occurrences_trouvees]${reset_color}"
echo "-----------------------------------------------------"
echo ""
done < "$mots_file"