Pages : 1
#1 Le 12/08/2006, à 11:16
- xbright
[résolu] Remplacement de textes à la volée
Bonjour,
J'ai une dizaine de fichiers .php qui contiennent, entre autre, un texte du genre : "machin.truc". Je voudrais remplacer toutes les occurences de "machin.truc" en "machin.chose".
Je ne peux pas le faire à la main car ça me prendrait trop de temps et puis je pourrai en oublier..
Donc, connaissez vous quelque chose qui pourrait remplacer ces textes sur plusieurs fichiers ??
Dernière modification par xbright (Le 12/08/2006, à 18:14)
| tagada | CodingTeam | Ubuntu Réunion | Linux Facile | Mon blog |
Rien à faire ! Moi, je préfère les fraises.
Hors ligne
#2 Le 12/08/2006, à 11:28
- calimarno
Re : [résolu] Remplacement de textes à la volée
Salut xbright,
Ben en général la fonction remplacer de n'importe quel éditeur de texte (Gedit, Kwrite) le fera!
Les Chroniques de Calimarno -- Swisslinux.org
"Alors que tous les autres ont des problèmes, les chimistes ont des solutions!" :D
----
Pour passer un sujet en [Résolu], il suffit que l'auteur du premier message du sujet modifie le titre en cliquant sur "Modifier".
Hors ligne
#3 Le 12/08/2006, à 11:36
- xbright
Re : [résolu] Remplacement de textes à la volée
Oui, y a la fonction Remplacer de mon BlueFish mais elle ne le fait que dans un seul fichier.. A la limite je peux le faire, mais c'est lourd
| tagada | CodingTeam | Ubuntu Réunion | Linux Facile | Mon blog |
Rien à faire ! Moi, je préfère les fraises.
Hors ligne
#4 Le 12/08/2006, à 11:48
- jr95
Re : [résolu] Remplacement de textes à la volée
Bonjour,
C'est faisable avec quelques lignes de script bash du style
LISTEFIC="fic1 fic2 fic3"
for f in $LISTEFIC
do
sed -e 's/machin.truc/machin.chose/g' $f > $f.temp
mv $f.temp $f
done
Hors ligne
#5 Le 12/08/2006, à 12:00
- xbright
Re : [résolu] Remplacement de textes à la volée
Cool merci, je vais tester
EDIT : j'en demande un peu trop, mais, serait il possible de lister tous les fichiers .php du répertoire plutôt que d'entrer leur non un à un ?
Dernière modification par xbright (Le 12/08/2006, à 12:06)
| tagada | CodingTeam | Ubuntu Réunion | Linux Facile | Mon blog |
Rien à faire ! Moi, je préfère les fraises.
Hors ligne
#6 Le 12/08/2006, à 12:32
- Black_pignouf
Re : [résolu] Remplacement de textes à la volée
Salut!
for f in `ls -1 *.php`
do
sed -ie 's/machin.truc/machin.chose/g' $f
done
Mais fait bien une copie de sauvegarde avant de tenter quoi que ce soit, tu aurais tôt fait de faire de grosses bêtises et de perdre des informations!
Si besoin est, tu peux lancer:
for f in `ls -1 *.php`
do
sed -i.bak -e 's/machin.truc/machin.chose/g' $f
done
qui fera une copie de sauvegarde en .bak pour chaque fichier
Hors ligne
#7 Le 12/08/2006, à 18:13
- xbright
Re : [résolu] Remplacement de textes à la volée
J'ai fait un petit test (j'ai pas trop eu le temps de faire ça avec mes bons fichiers). Ca marche très bien
Merci
| tagada | CodingTeam | Ubuntu Réunion | Linux Facile | Mon blog |
Rien à faire ! Moi, je préfère les fraises.
Hors ligne
#8 Le 12/08/2006, à 20:28
- jdloic
Re : [résolu] Remplacement de textes à la volée
Bonjour,
C'est faisable avec quelques lignes de script bash du style
LISTEFIC="fic1 fic2 fic3" for f in $LISTEFIC do sed -e 's/machin.truc/machin.chose/g' $f > $f.temp mv $f.temp $f done
On peut aussi faire:
sed -e -i 's/machin.truc/machin.chose/g' $f
Hors ligne
#9 Le 12/08/2006, à 20:37
- xbright
Re : [résolu] Remplacement de textes à la volée
Cela revient au même que ce que m'a proposé Black_pignouf :
for f in `ls -1 *.php`
do
sed -ie 's/machin.truc/machin.chose/g' $f
done
| tagada | CodingTeam | Ubuntu Réunion | Linux Facile | Mon blog |
Rien à faire ! Moi, je préfère les fraises.
Hors ligne
#10 Le 12/08/2006, à 21:34
- jdefaver
Re : [résolu] Remplacement de textes à la volée
on peut encore simplifier un peu :
for i in *.php; do sed -ie 's/machin.truc/machin.chose/g' $f; done
meme pas besoin de scripter, en fait
Hors ligne
#11 Le 12/08/2006, à 22:56
- Black_pignouf
Re : [résolu] Remplacement de textes à la volée
pas besoin de scripter non plus avec
for f in `ls -1 *.php`
do
sed -ie 's/machin.truc/machin.chose/g' $f
done
on peut très bien le taper tel quel dans la console ou le copier coller ainsi
Astuce: il faut taper Alt Gr+Entrée pour sauter une ligne sans exécuter
Hors ligne
#12 Le 13/08/2006, à 10:59
- jdefaver
Re : [résolu] Remplacement de textes à la volée
ma ramarque etait plutot sur le
for f in `ls -1 *.php`
qui est inutilement compliqué puisque
for f in *.php
fonctionne tout aussi bien. Autant simplifier les commandes au max, non ?
Hors ligne
#13 Le 13/08/2006, à 11:05
- Black_pignouf
Re : [résolu] Remplacement de textes à la volée
Tout à fait d'accord alors!
Je ne connaissais pas cette syntaxe d'ailleurs, merci pour le tuyau
Hors ligne
#14 Le 16/08/2006, à 12:09
- TuRn3r
Re : [résolu] Remplacement de textes à la volée
D'ailleurs, pour rendre le script plus générique :
#!/bin/bash
while [ $1 ] ;do
sed -ie 's/machin.truc/machin.chose/g' $1
shift
done
Explications:
$1 -> pour prendre le premier argument
shift -> pour supprimer le premier argument et décale tout les autres
Puis, tu lances le script :
Pour tout les fichiers du repertoire
#>./script *
Pour tout les fichiers .php :
#>./script *.php
etc...
Voir meme
#!/bin/bash
while [ $3 ] ;do
sed -ie 's/$1/$2/g' $3
shift
done
Pour tout les fichiers du repertoire, remplace machin.truc par machin.chose
#>./script machin.truc machin.chose *
Pour tout les fichiers .php, remplace texte avec espace par textesansespace:
#>./script "texte avec espace" textesansespace *.php
#15 Le 16/08/2006, à 12:28
- TuRn3r
Re : [résolu] Remplacement de textes à la volée
Enfin, plutot ca pour la 2eme version ::/
#!/bin/bash
string_search=$1
string_replace=$2
while [ $3 ] ;do
sed -i "s/$string_search/$string_replace/g" $3
shift
done
Pages : 1