Inicio InformáticaGnu/Linux Cómo buscar y reemplazar texto en varios archivos PHP desde la terminal

Cómo buscar y reemplazar texto en varios archivos PHP desde la terminal

Publicado por entreunosyceros
Publicado el: Última actualización:

AVISO: Esta entrada tiene más de dos años desde su publicación. Es posible que el contenido esté desactualizado.

Hoy he tenido que buscar una ruta relativa en varios archivos php, y la verdad es que eran unos cuantos archivos. Por eso me acordé de algo así de una clase que me dio un buen profesor en clase de Sistemas Informáticos, era algo relativo a buscar y reemplazar texto dentro de varios archivos al mismo tiempo desde la terminal. Por este motivo he «buscado» un poco para refrescarme la memoria.

Además de para solucionar el problema de direcciones relativas que se me planteó en relación a unas direcciones relativas, la solución «a mi problema» también es una estupenda salida cuando existe vulneraciones a un sitio por inyección de código. Estos ataques inyectan una cadena de código maliciosa en todos o varios archivos PHP del sitio atacado. Cuando esto ocurre, existen varias maneras de reaccionar ante ello.

Una manera de solventar este problema, es editando a mano uno a uno los archivos. Buscar y reemplazar la cadena maliciosa, ya sea restaurando una copia de seguridad de los archivos del sitio o bien tomando el trabajo de entrar y editar uno a uno los PHP infectados.

A pesar de que existen programas con un entorno gráfico para realizar esta misma tarea, uno que es un romántico de la terminal buscó y encontró un comando (conocido por muchos). Utilizando GREP  y xargs sed podemos hacer búsqueda y reemplazo de las cadenas de texto que queramos, de esa manera reparamos o arreglamos el problema sobre todos los archivos.php que encontremos. Lo de los archivos php es una opción personal, funciona con todo tipo de archivos.

Buscar y reemplazar texto dentro de archivos php, utilizando la terminal y grep

grep -lr 'Texto_a_Eliminar' *.php|xargs sed -i 's/Texto_a_eliminar/Texto_a_insertar/g'

Aclarar que habrá que situarse previamente en el directorio sobre el que queramos actuar. Es importante aclarar que el comando así tal cual lo presento aquí no va a realizar ninguna acción sobre el contenido  de ningún subdirectorio que en el se encuentre (ni tampoco sobre su contenido). Creo que eso se puede hacer, pero para el que quiera saber cómo, lo invito a echar un vistazo a la ayuda de esta comando.

En caso de querer saber hacer más cosas con este fantástico comando se puede visitar la siguiente dirección.

También te puede interesar ...

Deja un comentario

* Al utilizar este formulario, aceptas que este sitio web almacene y maneje tus datos.

2 Comentarios

Insulino 3 noviembre, 2016 - 8:16 PM

Es justo lo que necesitaba. Me ha venido genial el apunte. Gracias

Respuesta
sapoclay 4 noviembre, 2016 - 1:52 PM

Gracias por la visita.

Respuesta

Adblock Detectado!!

Ayúdanos deshabilitando la extensión AdBlocker de tu navegador para visitar esta web.
Si no sabes hacerlo en Chrome, consulta el siguiente enlace. Si utilizas Firefox, puedes consultar este otro enlace.
Esto mejorará tu experiencia en este sitio web.