Version complète: sur le forum Webmaster Hub : remplacer une chaine de caractere complexe
Webmaster Hub > Informatique & Internet > PC-Gyver
amazilia
Bonjour,

je suis en train de modifier à travers plusieurs dossiers une série de fichiers contenant la chaine


wp_theme_switcher() pour la remplacer par wp_theme_switcher('dropdown')


j'ai deux problèmes

1. comment faire cela à travers plusieurs dossiers

ceci ne marche que pour le dossier courant :
CODE
for file in "*.php"
do


2. comment mettre wp_theme_switcher() et wp_theme_switcher('dropdown') dans

sed 's/'$old_value'/'$new_value'/g' < $file.old > $file


pour le moment j'en suis là mais celà ne semble pas fonctionner :

CODE
#!/bin/sh

$old_value = 'wp_theme_switcher()';
$new_value = 'wp_theme_switcher(\'dropdown\')';

for file in "*.php"
do
/bin/mv $file $file.old
sed 's/'$old_value'/'$new_value'/g' < $file.old > $file
done


merci d'avance

Philippe
Spidetra
et en une ligne de Perl, un truc du style ?
CODE
perl -pi -e 's|wp_theme_switcher()|wp_theme_switcher('dropdown')|' \
 *.php


J'ai pas de Perl sous la main, il existe surement une option pour le parcours récursif des répertoires.
amazilia
bonjour,

à force de chercher, j'ai trouvé ça

CODE
#!/bin/sh

old_value="wp_theme_switcher()";
new_value="wp_theme_switcher('dropdown')";
SUCCESS=0  

for file in $(find . -name "*.php")
do
grep -q "$old_value" "$file"
if [ $? -eq $SUCCESS ]
# if grep -q "$word" "$filename"   can replace lines 5 - 7.
then
    /bin/mv $file $file.old
    sed "s/$old_value/$new_value/g" < $file.old > $file
fi
done
Ceci est une version "bas débit" de notre forum. Pour voir la version complète avec plus d'information, la mise en page et les images, veuillez cliquer ici.