Linux命令一次查找和删除多个文件中的文本

JPashs

我的网站感染了病毒。该病毒在我的站点的几个文件中添加了此行。我的想法是从终端使用唯一的命令删除此行文本。

假设我有文件夹“ my-folder”,并且在其中有我的文件:“ file-1.php”,“ file-2.php”等。

而且,假设有几个文件被感染。

是否有命令一次可以在多个文件查找和删除此行代码

要删除的文本:extract($ _ REQUEST)&& @assert(stripslashes($ accept))&& exit;

我发现了这一点,但仅适用于单个文件:

$ sed 's/extract($_REQUEST) && @assert(stripslashes($accept)) && exit;//' my-file.php

我可以这样做吗?

匆忙
  1. 您可以结合sed使用find使其递归。像这样的东西:

    find . -type f -name "*php" -exec sed -i.bak 's/extract($_REQUEST) && @assert(stripslashes($accept)) && exit;//' {} \+
    

    请注意,它将遍历当前目录树并将sed应用于每个现有的“ * php”文件。它还将为每个更改的文件创建.bak备份文件(以便以后以防万一,可以将其还原)。如果您不需要备份,-i.bak只需将替换-i否则,您可以稍后使用删除备份(一旦确认一切正常)find . -name "*php.bak" -delete

  2. 此步骤无法立即解决所有问题,但肯定可以节省将来的时间:将目录下的脚本保存在下面git(理想情况下,它应该是完整的CI / CD解决方案,但您可以从git开始),因此您可以轻松地回滚/转发应用于文件的更改。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章