Linux

查找文件讀取它並蒐索特定標識符

  • August 28, 2014

我試圖找出在哪些文件中使用了一些特定的標識符。我知道文件名和標識符,因此我使用以下命令來實現我想要的結果:

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 {} +

引用自:https://unix.stackexchange.com/questions/152574