2012-10-23 50 views
2

我有很少的存儲庫,並且每個都有config.php文件,其中包含有關數據庫(如密碼)的信息。我有腳本連接到數據庫使用該文件的東西,需要在目錄樹中搜索,所以我可以在每個嵌套的目錄中調用它。如何在GNU/Linux上的目錄樹中搜索文件

[ -e config.php ] && $(php -r 'require("config.php"); echo "mysql -u".$config["db_user"] . " -p".$config["db_pass"] . " " . $config["db_name"];') 

什麼是使用bash找回來在目錄樹中最簡單的方法?

回答

2

這將從PWD的末尾截掉一個目錄,直到它變爲空。在有鏈接的情況下可能需要注意。

S="${PWD}" 
while [ -n "${S}" ] 
do 
    [ -e "config.php" ] && ls $S/ 
    S=${S%/*} 
done 
0

'find topdir/-type f -iname「config.php」'其中'topdir'是配置腳本所在的最上面的目錄。根據您的要求,您可能需要一次處理'config.php'文件。

'find topdir/-type f -iname「config.php」-print0 | xargs -0 yourscript'

or one by one 'find topdir/-type f -iname「config.php」-exec yourscript {} \;'

+0

我在想''pwd'被''分割,然後測試config.php。您編寫的腳本將搜索topdir內部的每個內部目錄/我想要搜索回根目錄。我不知道我的config.php所在的位置,我想通過反向查找來尋找它。 – jcubic

+0

下面的bash腳本會迭代地從'$ PWD'中刪除最後一個目錄。在循環內部而不是回顯'$ S',你可以測試'config.php'的存在情況S =「$ {PWD}」; while [-n「$ {S}」]; do echo $ S; S = $ {S%/ *}; done – user1666959

+0

我用這個'S =「$ {PWD}」; while [-n「$ {S}」];做[-e「$ S/config.php」] && ls $ S /; S = $ {S%/ *};完成「,並將其作爲答案,我接受它。 – jcubic