Bonjour à tous,
Je viens vers vous aujourd’hui pour vous demander un petit coup de pouce, je suis bloqué sur un script bash;
Je m’explique:
je fais des traitements de fichiers grâce a leurs noms en les comparant à une liste contenue dans un fichier différent, le format du nom de fichier est de type suivant:
dossier_année_mois_nom_prénom_serial.pdf
je récupère tous les éléments dans un tableau après avoir enlevé l’extension et remplacé les « _ » par des espaces.
mon problème est que la partie nom et prénom peuvent contenir plusieurs mots et je cherche à parcourir le tableau et a extraire les mots correspondants
voici mon code:
for n in *.pdf; do
f="$(basename "$n" .pdf)" # enleve le chemin et l'extension du fichier
tbl=( ${f//_/\ } ) # remplce "_" par des espaces et mets dans un tableau
fin=${#tbl[@]} # compte le nombre d'enregistrement dans le tableau
fi=$((fin-1)) # fin du tableau en enlevant le serial
while IFS=, read -r first last mail; do # parcours le fichier csv
if [ "${first^^}" == "${tbl[3]^^}" ] && [ "${tbl[@]:4:$fi}" == "$last" ]; then # si le nom contenu dans le fichier correspond à la partie nom du fichier et que la suite correspond au prénom..
nom="${first^^}"
prenom="${last^}"
fi
done < /chemin/vers/mon/csv
ce code ne fonctionne pas il ne parcours pas le tableau du 4ème au dernier, je ne sais pas si c’est la bonne approche, parce que je dois dupliquer la condition en décalant de 1 si le nom comporte 2 mots…
je vous remercie de votre aide.