grep命令适用于Ubuntu,但不适用于Fedora

时间:2013-11-05 22:34:19

标签: grep fedora

我定期为客户端清理被黑客入侵的Wordpress安装,并且我已经编写了一组脚本来帮助我找到网站被黑客攻击的位置。我定期使用的一个代码片段在Ubuntu上工作得很好,但由于周五切换到Fedora的表现与预期相当。命令是这样的:

grep -Iri --exclude "*.js" "eval\s*(" * | grep -rivf ~/safeevals.txt >../foundevals.txt;

它应该发生什么(当我使用Ubuntu时发生了):grep遍历所有非二进制文件,不包括Javascript包含,对于eval()函数的所有出现,然后在一行上执行否定匹配逐行扫描Wordpress的vanilla安装中eval()函数的所有已知出现(其模式在〜/ safeevals.txt中)。

实际发生的事情:第一部分工作正常,因为我单独运行它,它确实在安装中找到了eval()的所有实例。然而,在管道重新浏览所有文件之后,不是通过这些结果进行greping,而是返回〜/ safeevals.txt的负匹配(即几乎安装中每个文件的每一行)。

知道为什么第二个grep没有对管道数据进行操作,或者我需要做些什么来修复它?感谢。

- 迈克尔

1 个答案:

答案 0 :(得分:3)

刚刚在我的Debian框中测试过:显然,grep -r喜欢假设.的默认参数。我真的很想知道这种行为是否有效。无论如何,我想从第二个-r命令中删除grep选项将解决它。

编辑: rgrep默认为$ PWD似乎是grep的最新更改,请参阅unix.stackexchange上的this discussion以及上游grep代码存储库中提交的链接。