Remplacer une chaîne dans tous les fichiers en récursif
Par PlaceOweb le lundi, mai 11 2009, 18:58 - Système - Lien permanent
Remplacer une chaîne de caractère dans tous les fichiers et sous dossiers.
Remplacement de chaîne dans vos fichiers en récursif
Avec perl vous pouvez remplacer le contenu de vos fichiers avec la commande suivante :
perl -pi'*.bak' -e 's/ChaineARemplacer/ChaineRemplacée/g' `find . -name '*'`
Cette commande modifie tous vos fichiers en récursif en changeant le mot "ChaineARemplacer" par "ChaineRemplacée". Et enregistre les fichiers initiaux avec l'extension ".bak"
Mise en application de la substitution de chaînes pour migrer ses vieux sites PHP
Donc pour les amateurs de PHP qui souhaitent convertir leurs balises courtes d'ouverture de PHP short open tag <? en <?php
perl -pi'*.bak' -e 's/\<\?/\<\?php/g' `find . -name '*.php'`
Et voilà la première substitution de string est faite ! Et au cas où il y avait déjà des fichiers contenant <?php on convertit les <?phpphp en <?php
perl -pi'*.bak' -e 's/\<\?phpphp/\<\?php/g' `find . -name '*.php'`
Et on termine avec la correction des écritures courtes : <?= qui sont écrites en <?php=
perl -pi'*.bak' -e 's/\<\?php=/\<\?php echo /g' `find . -name '*.php'`
Et optionnellement ajouter un espace à echo$var p
perl -pi'*.bak' -e 's/echo\$/echo \$/g' `find . -name '*.php'`
Pour finir, si nous n'avons plus besoin des fichiers de backup (*.bak), nous les supprimons :
find . -name "*.bak" -type f -exec rm -fv {} \;