如何使用Linux CLI查找一行代码并从特定/目录中的所有文件中删除该行

时间:2017-12-14 23:59:16

标签: linux

所以我用它来查找/目录中包含代码的所有文件" test"

SELECT

现在我想一次删除/ directory中所有文件中找到的代码。

只检测每个文件的代码行。

更新***

我想删除注入的代码grep -R “test” /directory

所以这已经完成但它不起作用。没有显示错误消息。它只接受命令。

@require(dirname(__FILE__).'/php/malware.php');

2 个答案:

答案 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