用shell命令替换第一行

时间:2016-02-17 04:17:46

标签: shell replace

我的文件遭到攻击。

现在我的许多文件都以

开头
; ?><?php 

在第一行。

我想用

替换它
<?php 

我需要一个shell命令来递归地处理我服务器中的许多目录,所以参数可以是一个目录。

只需要第一行,只需要PHP文件。

1 个答案:

答案 0 :(得分:1)

使用sed对一个文件进行此类编辑的命令将是

sed -i '1s/^; ?><?php/<?php/' file

替换该文件就地。如果您使用BSD sed而不是GNU sed,则必须在sed -i.bak中指定扩展名。

现在,要对许多文件执行此操作,您可以将命令与find

组合使用
find . -type f -name '*.php' -exec sed -i '1s/^; ?><?php/<?php/' {} \;

这将以递归方式查找所有.php个文件并进行替换。

总而言之,如果你真的被黑了,你应该从一个已知的好备份开始。