从多个文件中删除代码行

从多个文件中删除代码行

我正在 Virtual Box 中运行 Web 服务器来测试一些项目。我注意到一些 html 文件包含这些不需要的行。我想从多个 html/htm 文件中删除这些代码行,因此我这样做了:

find /Desktop/TEST_REMOVAL3/ -name '*.html' -or -name '*.htm' -or -name '*.php' | sed -i "/<SCRIPT Language=VBScript>/,/ //--></SCRIPT><!-- /d"

<SCRIPT Language=VBS>到目前为止,第一部分(查找/找到所有 html 文件)可以正常工作。我需要删除从到开始</SCRIPT>的行的部分sed失败了 :D

我会尝试再次弄清楚,同时等待您的建议和对我错在哪里的责骂:D

答案1

如果您想使用文件列表作为命令find的参数sed(而不是作为输入,这是您的行正在做的事情),您必须使用以下命令xargs

find dir -name '*.html' | xargs -d \\n sed -i "COMMANDS"

在这种情况下,xargs采用文件列表,使用换行符(\n)作为文件名之间的分隔符,并sed以它们作为参数开头。

或者使用-exec查找选项:

find dir -name '*.html' -exec sed -i "COMMANDS" {} +

在这种情况下,将在和find之间运行命令,同时替换文件名(列表)。还有-exec+{}

find dir -name '*.html' -exec sed -i "COMMANDS" {} \;

其功能基本相同,但sed为每个文件名启动一个新的。

相关内容