J'exécute cette commande pour rechercher et remplacer toutes les occurrences de 'Apple' par 'orange' dans tous les fichiers de la racine de mon site:
find ./ -exec sed -i 's/Apple/orange/g' {} \;
Mais cela ne passe pas par les sous-répertoires.
Quel est le problème avec cette commande?
Voici quelques lignes de sortie de find ./
:
./index.php
./header.php
./fpd
./fpd/font
./fpd/font/desktop.ini
./fpd/font/courier.php
./fpd/font/symbol.php
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' {} \;
Pour les tâches 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'
Cela a fonctionné pour moi:
find ./ -type f -exec sed -i '' 's#NEEDLE#REPLACEMENT#' *.php {} \;
grep -e Apple your_site_root/**/*.* -s -l | xargs sed -i "" "s|Apple|orage|"
Je pense que nous pouvons le faire avec une simple commande en ligne
for i in `grep -rl eth0 . 2> /dev/null`; do sed -i ‘s/eth0/eth1/’ $i; done
Reportez-vous à ceci page .