您好我正在尝试为客户清理js-trojan的网站,它补充道:
<script src='http://nt02.co.in/3'></script>
到所有html页面。
由于手动清理的文件太多,我试图找到这样的:
find ./ -type f -exec sed -e "s\<script src='http://nt02.co.in/3'></script>\ \g" {} > {} \;
问题是你不能用sed输出到输入。 所以我尝试做了类似的事情:
find ./ -type f ! -iname "*.new" -exec sed -e "s\<script src='http://nt02.co.in/3'></script>\ \g" {} > {}.new \;
也不起作用,它输出一个名为“{} .new”...
的文件有关如何做到这一点的任何提示?或者另一种解决方法如何清理它?
答案 0 :(得分:1)
我认为你的事情比他们需要的更复杂。特别是,您希望使用-i标志,它允许您根据需要编辑文件。 你可能想要像
这样的东西sed -i '/<script src='http:\/\/nt02.co.in\/3'><\/script>/ d' *.html
或者如果你感觉更舒服,可以使用脚本,例如
for f in "dir/*.html"
do
sed -i '/<script src='http:\/\/nt02.co.in\/3'><\/script>/ d' $f
done
请参阅http://www.cyberciti.biz/faq/unix-linux-replace-string-words-in-many-files/
答案 1 :(得分:0)
未测试:
find . -type f -print0 | xargs -0 perl -i.nt02 -pe "s#<script src='http://nt02.co.in/3'></script># #g"
答案 2 :(得分:0)
你可能不完全清楚@ user379118的答案,但-i标志(或--in-place)允许你用sed进行就地编辑,可选择允许你创建一个副本你去的原始文件,以防万一。
答案 3 :(得分:0)
感谢您的回答! 我确实喜欢这个:
while read f
do
sed -i "s#<script src='http://nt02.co.in/3'></script># #g" "$f"
done < list
list是一个包含文件路径的文件,生成如下:
grep -irl "<script src='http://nt02.co.in/3'></script>" ./folder/ > list