Buscar y reemplazar con sed en directorios y subdirectorios

Ejecuto este comando para buscar y reemplazar todas las apariciones de ‘manzana’ con ‘naranja’ en todos los archivos en la raíz de mi sitio:

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

pero no pasa por los subdirectorios.

¿Qué pasa con este comando?

Editado: aquí hay algunas líneas de salida del comando find ./:

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

Tu búsqueda debería verse así para evitar enviar nombres de directorio a sed:

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

Para tareas s & r más grandes, es mejor y más rápido usar grep y xargs, así que, por ejemplo;

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

Esto funcionó para mí:

 find ./ -type f -exec sed -i '' 's#NEEDLE#REPLACEMENT#' *.php {} \; 
 grep -e apple your_site_root/**/*.* -s -l | xargs sed -i "" "s|apple|orage|" 

Creo que podemos hacer esto con un comando simple de una línea

 for i in `grep -rl eth0 . 2> /dev/null`; do sed -i 's/eth0/eth1/' $i; done 

Consulte esta página .

En linuxOS:

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

si “sed” no funciona, intente:

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