我在 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
将工作。