Aller au contenu

remplacer une chaine de caractere complexe


Sujets conseillés

Posté

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 :

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 :

#!/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

Posté

et en une ligne de Perl, un truc du style ?

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.

Posté

bonjour,

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

#!/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

Veuillez vous connecter pour commenter

Vous pourrez laisser un commentaire après vous êtes connecté.



Connectez-vous maintenant
×
×
  • Créer...