169 votes

Recherche et remplacement récursifs dans les fichiers texte sur Mac et Linux

Dans le shell Linux, la commande suivante recherchera et remplacera récursivement toutes les instances de « this » par « that » (je n'ai pas de shell Linux devant moi, mais cela devrait le faire).

 find . -name "*.txt" -print | xargs sed -i 's/this/that/g'

À quoi ressemblera une commande similaire sur OSX ?

217voto

Will Points 301

Pour le mac, une approche plus similaire serait celle-ci :

 find . -name '*.txt' -print0 | xargs -0 sed -i "" "s/form/forms/g"

25voto

Maciej Gurban Points 1787

Comme solution alternative, j'utilise celui-ci sur Mac OSX 10.7.5

 grep -ilr 'old-word' * | xargs -I@ sed -i '' 's/old-word/new-word/g' @

Le mérite revient à :  la réponse de Todd Cesere

19voto

eb80 Points 603

Aucun des éléments ci-dessus ne fonctionne sur OSX.

Procédez comme suit :

 perl -pi -w -e 's/SEARCH_FOR/REPLACE_WITH/g;' *.txt

8voto

vroc Points 87

Une version qui fonctionne sur Linux et Mac OS X (en ajoutant le -e passer à sed ):

 export LC_CTYPE=C LANG=C
find . -name '*.txt' -print0 | xargs -0 sed -i -e 's/this/that/g'

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