Bonjour,

Je souhaiterais me faire un petit script en Korn shell qui me permettrait de modifier les noms de mes fichiers en fonction d'un motif de recherche. Je voudrais modifier un motif à remplacer par un autre. Exemple :
Dans un répertoire MonRep/Initial/, j'ai les fichiers suivants :

champ1.champ2.champ3.champ4.champ5.champ6
champ1Bis.champ2Bis.champ3Bis.champ4Bis.champ5Bis.champ6Bis
champ1Ter.champ2Ter.champ3Ter.champ4Ter.champ5Ter.champ6Ter
champ1.champ2.champ3Bis.champ4Ter.champ5.champ6
champ1Bis.champ2.champ3.champ4.champ5.champ6Ter

Ce que je souhaiterais faire, c'est : parmi tous les fichiers contenant le motif "champ2", le motif "champ4Ter" soit remplacé par le motif "champ4New" donc cela me donnerait le résultat suivant :

champ1.champ2.champ3.champ4.champ5.champ6
champ1Bis.champ2Bis.champ3Bis.champ4Bis.champ5Bis.champ6Bis
champ1Ter.champ2Ter.champ3Ter.champ4Ter.champ5Ter.champ6Ter
champ1.champ2.champ3Bis.champ4New.champ5.champ6
champ1Bis.champ2.champ3.champ4.champ5.champ6Ter

Voici le début de mon code :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
#!/bin/ksh
#--------------------------------------------------
# Declaration des variables
#--------------------------------------------------
 
RepInit=MonRep/INITIAL
RepFin=MonRep/FINAL
 
#--------------------------------------------------
# Debut programme
#--------------------------------------------------
 
echo "Quel est le motif a rechercher dans les fichiers ?"
read MotFic
 
echo "Quel est le motif a remplacer ?"
read MotARemp
 
echo "Quelle est sa position dans le fichier ?"
read MotPosi
 
echo "Quel est le motif qui le remplace ?"
read MotNouv
 
set +A ListFic `ls -1 ${RepInit}/*${MotFic}* | grep -v ${MotARemp} | awk -F'.' '{print $${MotPosi}}'`
Et là je sèche un peu parce que ma commande
Code : Sélectionner tout - Visualiser dans une fenêtre à part
set +A ListFic `ls -1 ${RepInit}/*${MotFic}* | grep -v ${MotARemp} | awk -F'.' '{print $${MotPosi}}'`
ne me renvoie pas la bonne réponse, elle ne me renvoie que "champ2".

Pourriez-vous m'aider, s'il-vous-plaît ?

N'hésitez pas à me poser des questions si je ne suis pas assez clair.

Merci d'avance.