Script Bash/sh split chaine de caractère

Bonjour chère communauté!

je vous sollicite aujourd’hui car j’ai besoin de vos conseils avisés.

Je cherche à faire une petit script qui me permettrait:

  • de récupérer le nom d’un fichier et le stocker dans une variable,
  • de découper la chaine de caractères précédemment stockée en fonction de l’espace contenu entre 2 mots
  • de stocker chaque mot dans des variables différentes pour pouvoir les manipuler par la suite.

Comment je devrais procéder selon vous?

merci par avance.

EDIT: La solution complète se trouve Sur ce fil de discussion sur le forum ubuntu merci à tous!!

Bonjour,
le caractère de délimitation est un espace? avec seulement 2 chaines,
var1=$(echo $STR | cut -f1 -d' ')
var2=$(echo $STR | cut -f1 -d' ')

bonjour,

merci de ce retour.

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…

Bonjour

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

EDIT : Suivant le fil de discussion sur ubuntu,
ajout d’un test pour vérifier qu’il s’agit bien d’un fichier