2013-05-30 40 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

感謝這是一個非常有益的起點! –