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 -0
indicador for xargs
, porque de esa manera xargs
se esperan argumentos terminados en nulo, lo que no funciona con la salida de grep -l
. Simplemente suelte -0
y 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á.