56 votes

Remplacer une chaîne par une autre chaîne dans tous les fichiers sous mon répertoire actuel

Comment remplacer chaque occurrence d'une chaîne par une autre chaîne sous mon répertoire actuel ?

Exemple : je souhaite remplacer chaque occurrence de www.fubar.com par www.fubar.ftw.com dans chaque fichier de mon répertoire actuel.

De la recherche jusqu'à présent, j'ai trouvé

 sed -i 's/www.fubar.com/www.fubar.ftw.com/g' *.php

3voto

johnny Points 541

Solution utilisant find, args et sed :

 find . -name '*.php' -print0 | xargs -0 sed -i 's/www.fubar.com/www.fubar.ftw.com/g'

2voto

bash-o-logist Points 2088

Une solution bash pure

 #!/bin/bash
shopt -s nullglob
for file in *.php
do
    while read -r line
    do
       echo "${line/www.fubar.com/www.fubar.ftw.com}"
    done < "$file" > tempo && mv tempo "$file"

done

0voto

Seweryn Niemiec Points 691

Lorsque vous utilisez ZSH comme shell, vous pouvez effectuer les opérations suivantes :

 sed -i 's/www.fubar.com/www.fubar.ftw.com/g' **/*.php

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X