Linux
查找文件讀取它並蒐索特定標識符
我試圖找出在哪些文件中使用了一些特定的標識符。我知道文件名和標識符,因此我使用以下命令來實現我想要的結果:
find ./ -name "configuration.php" -print | xargs cat | grep db_userXYZ
唯一的問題是,我失去了文件名。我看到它
db_userXYZ
正在某處使用,但上面的命令並沒有告訴我在哪個文件中。輸出將類似於:$this->db_user = 'db_userXYZ'; $this->db_name = 'db_XYZ';
有什麼建議麼?
嘗試:
find ./ -name "configuration.php" -exec grep db_userXYZ /dev/null {} +
POSIX 定義的find
-exec utility_name [argument ...] {} +
:如果主表達式被加號標出,則主表達式應始終評估為真,並且評估主表達式的路徑名應聚合到集合中。應為每組聚合路徑名呼叫一次實用程序實用程序名稱。每次呼叫都應在集合中的最後一個路徑名被聚合之後開始,並且應該在 find 實用程序退出之前以及在下一個集合中的第一個路徑名(如果有的話)被聚合之前完成,但是在其他方面未指定呼叫是否發生在其他初選評估之前、期間或之後。如果任何呼叫返回非零值作為退出狀態,則查找實用程序應返回非零退出狀態。僅包含兩個字元“{}”的參數 應由一組聚合路徑名替換,每個路徑名作為單獨的參數傳遞給呼叫的實用程序,其順序與聚合的順序相同。應限制任何兩個或多個路徑名的大小,以使實用程序的執行不會導致超出系統的 {ARG_MAX} 限制。如果存在多個僅包含兩個字元“{}”的參數,則行為未指定。
如果您的
grep
支持-H
選項(POSIX grep-H
未定義),您可以使用:find ./ -name "configuration.php" -exec grep -H db_userXYZ {} +