texto sustituir script reemplazar para linea especiales completa comando caracteres linux command-line sed replace

linux - sustituir - Buscar y reemplazar con sed en directorios y subdirectorios



sed reemplazar/ (6)

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


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 page .


En linuxOS:

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

si "sed" no funciona, intente:

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


Esto funcionó para mí:

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


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''


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'' {} /;


grep -e apple your_site_root/**/*.* -s -l | xargs sed -i "" "s|apple|orage|"