pour expliquer un peu mieux, j’ai des fichiers qui vont venir se déverser dans un dossier, chaque fichier aura un nom explicite et chaque mot contenu dans le nom me permettra de déclencher un traitement.
exemple de nom de fichier: « Nom Prenom Service Action.pdf » (les chaines de caractères sont séparées par des espaces)
mon but est donc de repérer les fichiers avec l’extension .pdf dans le dossier et pour chaque fichier, je souhaite récupérer les mots et les stocker dans des variables séparées:
var1=« Nom »
var2=« Prénom »
…
une fois les variables récupérées, j’effectue mon traitement et je passe au fichier suivant…
michel@debbull:~$ nomFichier="Nom Prenom Service Action.pdf"
michel@debbull:~$ tableauNom=( ${nomFichier%%.*} ) # Pour enlever l'extension du nom de fichier et en faire un tableau
michel@debbull:~$ echo ${#tableauNom[@]} # Pour afficher le nombre d'éléments contenus dans le tableau
4
michel@debbull:~$
michel@debbull:~$ echo ${tableauNom[0]} # Pour afficher le premier élément du tableau
Nom
michel@debbull:~$ echo ${tableauNom[1]} # Pour afficher le deuxième élément du tableau
Prenom
michel@debbull:~$ echo ${tableauNom[2]} # Pour afficher le troisième élément du tableau
Service
michel@debbull:~$ echo ${tableauNom[3]} # Pour afficher le quatrième élément du tableau
Action
michel@debbull:~$
En utilisant la méthode ci-dessus dans un script,
ça pourrait donner ce qui suit :
#!/bin/bash
rep="/chemin/du/repertoire" # nom du chemin du répertoire contenant les noms de fichier pdf à traiter
for f in "$rep"/*.pdf; do # pour récupérer chaque nom de fichier
[ -f "$f" ] || continue # s'il ne s'agit pas d'un nom de fichier, alors ne rien faire.
f="${f##*/}" # pour enlever le chemin du fichier
tbl=( ${f%%.*} ) # pour enlever le point et l'extension et faire un tableau
echo "les 4 variables sont : ${tbl[0]} ${tbl[1]} ${tbl[2]} ${tbl[3]}"
# tu feras ici ce que tu veux faire avec les variables créées pour chacun des noms de fichier
done