linux下如何可以搜索目录下所有文件是否包含A文件的字符串,同时将这所有文件包含A文件的部分字符串搜索替换成其他字符串啊?

2013-09-22 14:50:20 +08:00
 nonozone
其实我是为了解决这个问题 http://v2ex.com/t/83224

真心求教下。
3781 次点击
所在节点    问与答
14 条回复
anheiyouxia
2013-09-22 15:02:05 +08:00
可以用grep
给你个例子:http://blog.csdn.net/unbutun/article/details/6326598

如果是我的话,我会全部下回来用Beyond Compare之类的工具和源文件进行对比
nonozone
2013-09-22 15:05:14 +08:00
@anheiyouxia 主要是文件太多了,目录结构也复杂,上传 尤其是下载挺麻烦的。
anheiyouxia
2013-09-22 15:56:31 +08:00
@nonozone 如果你用tar打包的话,可以用-exclude参数来排除掉那些你不需要的文件
主要是我觉得Beyond Compare之对比的话直观

当然,不喜欢下回来,就用grep命令也足够了,只不过你不知道是不是所有的木马都是同样的内容
所以我建议你最好再配合一些查杀webshell的工具来排查
nonozone
2013-09-22 16:14:10 +08:00
@anheiyouxia
文件都没变动,只是在有些文件头部加了一串代码。目测没有多余文件。
应该是同样的,主要是我对正则不太熟悉,没办法很完整的匹配。grep如果是一段简单的话还知道怎么处理,这段代码对我来说过于复杂了。
不知道有啥比较好的查杀webshell的工具?

谢谢。
ooxxcc
2013-09-22 16:26:19 +08:00
先grep查找哪些有这个字符串,然后用sed修改……

抛砖

grep -L -r "string1" . | xargs sed -i 's/string1/string1/g'
nonozone
2013-09-22 17:03:15 +08:00
@ooxxcc 简单的字符串可以这么处理啊。这一串太复杂了。
anheiyouxia
2013-09-22 17:05:15 +08:00
@nonozone 不需要正则表达式
grep -R wordpress_dir --include="*" 'base64_decode'
就可以把wordpress_dir 目录下包含‘base64_decode’的文件都列出来

以前有关注过这类查杀工具,不过现在不知道有什么了,给你找了一个大概的,你看看:http://www.jb51.net/article/29543.htm
anheiyouxia
2013-09-22 17:06:03 +08:00
@nonozone 另外你也可以参考一下此文:http://www.jincon.com/detail-52.html
nonozone
2013-09-22 17:06:58 +08:00
@anheiyouxia 用简单的grep就可以列出来了,关键是怎么把这一段弄掉,我发现这好像就是在第一行,,并且后面还有N行空格,怎么用命令匹配之后,直接删掉第一行呢?
anheiyouxia
2013-09-22 19:07:38 +08:00
@nonozone 正则表达式就帮不了你了。不过,这应该不多吧?不多的话,就直接手动吧,用正则这些,怕误伤吧?
9hills
2013-09-22 19:19:40 +08:00
@nonozone sed -i 1d xxxxx
删除文件第一行
9hills
2013-09-22 19:25:33 +08:00
另外我给lz一个一行命令,解决这个问题

find 目录/ -type f | xargs -i replace "这里是你要替换的字符串" ""

replace不做正则表达式展开,so一般不会有问题,另外字符串外部一定要加双引号或者单引号(内部的双引号和单引号对应转义即可)
9hills
2013-09-22 19:25:49 +08:00
晕,少了一部分

find 目录/ -type f | xargs -i replace "这里是你要替换的字符串" "" -- {}
nonozone
2013-09-22 20:25:48 +08:00
@9hills 我要把一长串都放进“”里面? 后面的--{}是啥意思?

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/83250

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX