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

我定期为客户清理黑客攻击的Wordpress安装,并且我有一套我写的脚本来帮助我追踪网站被黑客入侵的地方。 我定期使用的一个代码片段在Ubuntu上运行良好,但由于周五切换到Fedora的行为与预期相当。 命令是这样的:

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

它应该发生什么(并且在我使用Ubuntu时发生过):对于eval()函数的所有发生,grep通过所有非二进制文件(不包括Javascript包括),然后逐行执行负匹配针对Wordpress的一个vanilla安装中的eval()函数的所有已知发生(其模式在〜/ safeevals.txt中)。

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

任何想法为什么第二个grep不是处理管道数据,或者我需要做什么来修复它? 谢谢。

-Michael


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

编辑: rgrep默认为$ PWD似乎是最近grep的变化,请参阅关于unix.stackexchange的这个讨论以及那里的链接到上游grep代码库中的提交。

链接地址: http://www.djcxy.com/p/78055.html

上一篇: grep command that works on Ubuntu, but not on Fedora

下一篇: How to rename files using Zsh shell and `sed` command on Mac OSX