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 :
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
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.
Partager