linux - script - sed special characters




Chercher et remplacer par sed dans le répertoire et les sous-répertoires (4)

Cela a fonctionné pour moi:

find ./ -type f -exec sed -i '' 's#NEEDLE#REPLACEMENT#' *.php {} \;

Je lance cette commande pour trouver et remplacer toutes les occurrences de 'apple' avec 'orange' dans tous les fichiers à la racine de mon site:

find ./ -exec sed -i 's/apple/orange/g' {} \;

mais cela ne passe pas par des sous-répertoires.

Quel est le problème avec cette commande?

Edité: voici quelques lignes de sortie de find ./ command:

./index.php
./header.php
./fpd
./fpd/font
./fpd/font/desktop.ini
./fpd/font/courier.php
./fpd/font/symbol.php

En linuxOS:

sed -i 's/textSerch/textReplace/g' namefile

Si "sed" ne fonctionne pas, essayez:

perl -i -pe 's/textSerch/textReplace/g' namefile

Pour les tâches s & r plus importantes, il est préférable et plus rapide d'utiliser grep et xargs, par exemple;

grep -rl 'apples' /dir_to_search_under | xargs sed -i 's/apples/oranges/g'

Votre recherche devrait ressembler à cela pour éviter d'envoyer des noms de répertoires à sed:

find ./ -type f -exec sed -i -e 's/apple/orange/g' {} \;






replace