Eliminar una cadena larga de archivos php: ¿usando grep y sed?

Eliminar una cadena larga de archivos php: ¿usando grep y sed?

Encontré algún malware en mi servidor Linux y estoy intentando eliminarlo de muchos archivos php.

Lo he intentado infinitamente con grep | sed y grep | tr y ni siquiera pude borrar una cadena de texto simple, obteniendo diferentes errores.

Al intentar:

grep -l '@error' * | xargs -0 sed -i 's/error/nothing/g'   

Recibo un mensaje de error:

no puedo leerNombre del archivo.php

Usar Terminal en Mac: ¿tal vez sea un problema de sintaxis de OSX?

Mi tarea final es eliminar una larga cadena de código de todos los archivos, una que incluye algunos símbolos $,!,?,<,>,\,", ¿tendré que ponerles una barra invertida?

Respuesta1

Debe restaurar desde la copia de seguridad o el control de fuente como@Esterasugerido porque de lo contrario no podrá estar 100% seguro de haber limpiado todo.

El problema con su comando es el -0indicador for xargs, porque de esa manera xargsse esperan argumentos terminados en nulo, lo que no funciona con la salida de grep -l. Simplemente suelte -0y funcionará, siempre y cuando los nombres de los archivos no tengan espacios en blanco.

grep -l '@error' * | xargs sed -i 's/error/nothing/g'

Respuesta2

grep -l @error * | xargs sed -i s/error/test/g

trabajará.

información relacionada