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