从 php 文件中删除长字符串 - 使用 grep 和 sed?

从 php 文件中删除长字符串 - 使用 grep 和 sed?

我在 Linux 服务器上遇到了一些恶意软件,并试图从许多 php 文件中删除它。

我用 grep | 进行了无休止的尝试sed 和 grep | tr 甚至无法删除一个简单的文本字符串,从而出现不同的错误。

尝试时:

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

我收到一条错误消息:

无法阅读文件名.php

在 Mac 上使用终端 - 也许是 OSX 语法问题?

我的最后一项任务是从所有文件中删除一串长代码 - 其中包括一些 $,!,?,<,>,\," 符号 - 我需要对它们进行反斜杠吗?

答案1

您应该从备份或源代码控制恢复@垫建议这样做,因为否则你不能 100% 确定你清理了所有东西。

您的命令的问题是-0的标志xargs,因为这种方式xargs需要空终止参数,这不适用于 的输出grep -l。只要删除它就-0可以工作,只要文件名中没有空格。

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

答案2

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

将工作。

相关内容