所以我用它来查找/目录中包含代码的所有文件" test"
SELECT
现在我想一次删除/ directory中所有文件中找到的代码。
只检测每个文件的代码行。
更新***
我想删除注入的代码grep -R “test” /directory
所以这已经完成但它不起作用。没有显示错误消息。它只接受命令。
@require(dirname(__FILE__).'/php/malware.php');
答案 0 :(得分:3)
管道文件名应为sed:
grep -l -R “test” /directory | xargs -I {} sed -i '/test/d' {}
其中:
答案 1 :(得分:3)
如果您想仅删除文件的 test
模式而不是删除整行,您可以使用以下命令在大多数情况下会破坏您的文件代码:
grep -l -R 'test' /directory | xargs -I {} sed -i.bak 's/test//g' {}
它将全局替换测试模式,并在执行操作时备份文件!你永远不会知道:-)
如果您确定可以删除包含test
模式的整行,那么您可以通过以下方式使用sed:
grep -l -R 'test' /directory | xargs -I {} sed -i.bak '/test/d' {}
您可以在查找备份文件后删除它们,如果不再需要它们,请使用以下命令:
find /directory -type f -name '*.bak' -exec rm -i {} \;
如果您在删除文件时不需要确认,则可以在-i
之后删除rm
。