2013-07-28 99 views
-4

我有這樣的目錄結構在子目錄中查找文件。
我想找出包含特定字符串的config.ini文件,說: 「數據庫=一個」bash的,根據其內容

+0

-1此問題未顯示任何研究工作。 – kojiro

+0

在這種情況下,「研究努力」將會導致數次不成功的嘗試,從而使問題變得不那麼清晰。我很欣賞一些問題的清晰度,並且在短時間內已經有3個答案。這應該被考慮在內。 – AgostinoX

回答

0

我會用grep:

cd your_folder && grep -r "database=a" * 
+0

你爲什麼需要'cd'在這裏? –

0

您可以使用grep

grep -r -l --include=config.ini database=a . 

僅在名稱爲config.ini的文件中僅對database=a進行.的遞歸搜索(-r),並且只列出匹配的文件(-l)。

1

您可以使用find命令遞歸搜索所有文件中的字符串。例如:

find . -type f -name config.ini -exec grep -l "database=a" {} + 
+0

+1我喜歡這個答案,因爲它符合POSIX規範,沒有GNU擴展,也沒有放棄性能或清晰度。 (儘管我仍然會使用'grep -F');) – kojiro

0

另一個短變體:

grep 'database=a' ./**/config.ini 
#     ^^-recursively search for all `config.ini` files 

警告:僅適用,如果你沒有zilion配置文件 - 在其他情況下,你可以得到一個Argument list too long錯誤..

如果您只想要文件的名稱

grep -l 'database=a' ./**/config.ini 
+0

我認爲你必須在bash中啓用'globstar'才能工作,不是嗎? – kojiro

0

最容易:

grep -ri「database = a」*/config.ini