带sed的Linux查找不起作用

带sed的Linux查找不起作用,linux,bash,sed,find,Linux,Bash,Sed,Find,我有个大问题。我试图从我的项目中的第一行php文件中删除恶意软件代码,但控制台始终返回: sed:1:“./{PATH_TO_FILE}”:无效的命令代码 我的请求: find . -name "*.php" -type f -exec sed -n -i '1s/.*/<?php/' {} \; find-名称“*.php”-键入f-exec sed-n-i'1s/*/首先,您没有将通配符放在“.php”中。它应该是“*.php” find-名称“*.php” 其次,您忘记在exec子

我有个大问题。我试图从我的项目中的第一行php文件中删除恶意软件代码,但控制台始终返回:

sed:1:“./{PATH_TO_FILE}”:无效的命令代码

我的请求:

find . -name "*.php" -type f -exec sed -n -i '1s/.*/<?php/' {} \;

find-名称“*.php”-键入f-exec sed-n-i'1s/*/首先,您没有将通配符放在“.php”中。它应该是“*.php”

find-名称“*.php”

其次,您忘记在exec子句和exec子句末尾添加文件名的占位符(分号):

第三,sed表达式无效。如果要实现的是删除第一行,则“1d”应使其:

-exec sed-n-i'1d'{}

最后,-n似乎会干扰-i,所以只需移除它

您的完整命令应该是:


find-名称“*.php”-类型f-exec sed-i'1d'{}\

首先,您没有将通配符放在“.php”中。它应该是“*.php”

find-名称“*.php”

其次,您忘记在exec子句和exec子句末尾添加文件名的占位符(分号):

第三,sed表达式无效。如果要实现的是删除第一行,则“1d”应使其:

-exec sed-n-i'1d'{}

最后,-n似乎会干扰-i,所以只需移除它

您的完整命令应该是:


find-名称“*.php”-类型f-exec sed-i'1d'{}\

首先,您没有将通配符放在“.php”中。它应该是“*.php”

find-名称“*.php”

其次,您忘记在exec子句和exec子句末尾添加文件名的占位符(分号):

第三,sed表达式无效。如果要实现的是删除第一行,则“1d”应使其:

-exec sed-n-i'1d'{}

最后,-n似乎会干扰-i,所以只需移除它

您的完整命令应该是:


find-名称“*.php”-类型f-exec sed-i'1d'{}\

首先,您没有将通配符放在“.php”中。它应该是“*.php”

find-名称“*.php”

其次,您忘记在exec子句和exec子句末尾添加文件名的占位符(分号):

第三,sed表达式无效。如果要实现的是删除第一行,则“1d”应使其:

-exec sed-n-i'1d'{}

最后,-n似乎会干扰-i,所以只需移除它

您的完整命令应该是:


find-名称“*.php”-类型f-exec sed-i'1d'{}\

非常感谢!最后我用命令解决了这个问题

LC_ALL=C find . -name "*.php" -type f -exec sed -i '' -e "s/^<\?php.*\?>//" {} \;
LC_ALL=C查找-名称“*.php”-类型f-exec sed-i'-e“s/^/“{}\;

非常感谢!最后我用命令解决了这个问题

LC_ALL=C find . -name "*.php" -type f -exec sed -i '' -e "s/^<\?php.*\?>//" {} \;
LC_ALL=C查找-名称“*.php”-类型f-exec sed-i'-e“s/^/“{}\;

非常感谢!最后我用命令解决了这个问题

LC_ALL=C find . -name "*.php" -type f -exec sed -i '' -e "s/^<\?php.*\?>//" {} \;
LC_ALL=C查找-名称“*.php”-类型f-exec sed-i'-e“s/^/“{}\;

非常感谢!最后我用命令解决了这个问题

LC_ALL=C find . -name "*.php" -type f -exec sed -i '' -e "s/^<\?php.*\?>//" {} \;
LC_ALL=C查找-名称“*.php”-类型f-exec sed-i'-e“s/^/“{}\;

有多少文件?查找-name“.php”-键入f-exec sed-n-i'1s/*/不要试图编辑受感染的文件。换成干净的backups@Mithrandir:不要将
-n
-i
组合:它会截断输入文件,因为
-n
会抑制所有(隐式)输出,因此不会将任何内容写回输入文件。我认为@mklement在上面正确回答了您,
-n
会阻止输出(无需
p
sed命令,但更容易删除
-n
)。有多少文件?查找。-name.php-type f-exec sed-n-i'1s/*/不要尝试编辑受感染的文件。将其替换为干净的文件backups@Mithrandir:不要将
-n
-i
组合:它会截断输入文件,因为
-n
会抑制所有(隐式)输出,这样就不会将任何内容写回输入文件。我认为@mklement在上面正确回答了您的问题,
-n
排除了输出(没有
p
sed命令,但只需删除
-n
就更容易了)。有多少文件?查找。-name.php“-type f-exec sed-n-i'1s/*/不要尝试编辑受感染的文件。将其替换为干净的文件backups@Mithrandir:不要将
-n
-i
组合:它会截断输入文件,因为
-n
会抑制所有(隐式)输出,这样就不会将任何内容写回输入文件。我认为@mklement在上面正确回答了您的问题,
-n
排除了输出(没有
p
sed命令,但只需删除
-n
就更容易了)。有多少文件?查找。-name.php“-type f-exec sed-n-i'1s/*/不要尝试编辑受感染的文件。将其替换为干净的文件backups@Mithrandir:不要将
-n
-i
组合:它会截断输入文件,因为
-n
会抑制所有(隐式)输出,这样就不会将任何内容写回输入文件。我认为@mklement在上面正确回答了您的问题,
-n
排除了输出(没有
p
sed命令,但只需删除
-n
)就更容易了。这很好(将
-n
-i
组合实际上会截断输入文件,因为
-n
会抑制所有(隐式)输出,因此不会将任何内容写回输入文件)。但是,目的是用
优点替换第一行(将
-n
-i
组合实际上会截断输入文件,因为
-n
会抑制所有(隐式)输出,因此不会将任何内容写回输入文件)。但是,目的是将第一行替换为
优点(将
-n
组合)