【问题标题】:Find/Replace through all files on the root directory through SSH通过 SSH 查找/替换根目录上的所有文件
【发布时间】:2024-04-16 02:45:02
【问题描述】:

我刚刚注意到我的网站被黑了,所有 .php 文件在第 1 行都有一个 base64 编码字符串。每个文件的字符串都是相同的,所以...

如何搜索整个根目录并将其删除?

【问题讨论】:

    标签: security bash shell unix ssh


    【解决方案1】:

    尝试:

    find /path/to/dir -type f -name '*.php' -exec sed -i '/string-to-remove/{1d;}' '{}' \;
    

    编辑:

    • 添加了 -name '*.php' 以将其限制为 .php 文件。
    • 添加了 sed 匹配指令

    【讨论】:

    • 可能还想在其中添加一个-name,以限制为php
    • 我要删除的字符串在哪里?
    • 我建议在find 命令中添加-name '*.php',以免删除各种其他内容。而不是在sed 命令中不加选择地删除第一行,而是搜索特定的字符串(OP 说它在每个文件中都是相同的)并仅在找到匹配项时删除。 (更好的是,只匹配每个文件的第一行)。
    • @Dan for sed, 1d 说告诉它删除第一行。您可以使用4,6d 删除第 4 到第 6 行或使用$d 删除最后一行。
    • 嗯,我遇到了一些麻烦。这是我所拥有的find /home/dangold10 -type f -name '*.php' -exec sed -i '<?php "php code is here. Double quotes do exist in the line i want removed" ?>{1d;}' '{}' \;