从主文件夹中的所有 index.php 文件中递归删除字符串

从主文件夹中的所有 index.php 文件中递归删除字符串

我们需要一个 shell 脚本来查找并替换 /home 文件夹内所有 index.php 文件中的一段注入代码

答案1

你可以用 sed 来做。下面是很好的教程它可能很简单find /home/user -iname index.php -exec sed -i s/<piece of code to find/<replace with that>/ {} \;

我建议你在执行此操作之前先备份,然后运行一些测试以查看它是否正常工作。请记住,/ / 之间的内容是正则表达式,根据其格式,你可能会匹配更多你需要的内容。正如我所说,在你的“实时”文件上运行此操作之前先进行测试。

编辑:修复了 find 命令,感谢 rems

答案2

for file in $(find /home/user -iname index.php)
do
  echo "replacing in file $file ..."
  sed -i 's/<piece of code to find>/<replace with that>/g' $file
done

如果你想测试您可以先将其放在临时文件中,检查其是否正确,然后覆盖原始文件:

for file in $(find /home/user -iname index.php)
do
  echo "reading from $file, writing to $file.tmp ..."
  sed 's/<piece of code to find>/<replace with that>/g' $file > $file.tmp
done

现在检查一些文件并检查替换是否正确完成。如果一切正常,则使用以下命令将新的 index.php.tmp 文件重命名为 index.php

for file in $(find /home/user -iname index.php.tmp)
do
  echo "moving $file.tmp to $file ..."
  mv $file.tmp $file
done

如果要替换的代码中有斜杠(“/”),那么您可以在 sed 替换命令中使用另一个分隔符:'s# 要查找的代码片段# 用这个 #g 替换'

相关内容