2013-05-30 39 views
0

我在linux(redhat)文件系统上有一堆php文件,大部分文件似乎都可以,因为它们使用抽象数据库交互的函数,但是我发现了一些地方其中,嵌入式查询使用,而不是抽象层功能正则表达式匹配多个文件中的值

这些查询似乎被设计成与MySQL运行,但我们正在运行的Oracle,使他们为空值检查,例如当创建失败:

select name from user where name !='' 

在甲骨文这个查询将永远不会返回任何行,我需要像这样改变它:

select name from user where name !=' ' 

我已经能够解决这个问题,我现在经历的文件,我想主动找到其他文件中发生这种情况的任何地方;但是有很多的PHP文件,在许多目录进行检查

是否有可能运行在某个目录下的所有.php文件中搜索与文本的事件,如=“”或!=“”

这里是位于/ lib /其中嵌入查询中使用

$rs = $DB->get_recordset_sql (
"SELECT * 
    FROM {user} 
     WHERE confirmed = 1 AND lastaccess > 0 
     AND lastaccess < ? AND deleted = 0 
     AND (lastname = '' OR firstname = '' OR email = '')" 

我在想沿寻找嵌套沿着这些线路双引号内的双撇号线的东西在文件中的一个真实的例子\ “。* \''。* \” 但我没有那么有信心用linux来使搜索工作,并能够迭代多个文件!

\$DB->.*".*''.*" 

的作品,如果它是在一个单一的线,但显然不是在例子中,我给出:考虑使用SED通过多个做到这一点的比赛(N)现在行

回答

1
find topdir -type f -name '*.php' -exec grep -l "= *''" {} + 

grep工作一次一行,所以它不能通过在双引号内查找撇号来匹配您的示例,因为它们在不同的行上。所以我只是检查= ''

-l选项打印匹配文件的名称,而不是打印匹配的行。

+0

感谢这是一个非常有益的起点! –