Linux 递归搜索不同文件夹中的预定义文件名

Linux 递归搜索不同文件夹中的预定义文件名,linux,grep,Linux,Grep,所以我有这个文件结构: /var/www/html/website1/app/config/database.php /var/www/html/website2/app/config/database.php ... 我需要的是在每个database.php文件中找到一个特定的字符串,我已经尝试过了 grep -nrw "string" /var/www/html/*/app/config/* 但它似乎无法识别路径 我只是想知道是否有办法实现我的目标。code>find/var-maxde

所以我有这个文件结构:

/var/www/html/website1/app/config/database.php
/var/www/html/website2/app/config/database.php
...
我需要的是在每个
database.php
文件中找到一个特定的字符串,我已经尝试过了

grep -nrw "string" /var/www/html/*/app/config/*
但它似乎无法识别路径


我只是想知道是否有办法实现我的目标。

code>find/var-maxdepth 5-mindepth 5-name database.php-type f|xargs grep-nrw“string”

如果文件名中预期为“”:

find /var -maxdepth 5 -mindepth 5 -name database.php -type f -print0 | xargs -0 grep -nrw "string"

如果您要搜索的所有文件都遵循您问题中的模式,那么您不需要递归搜索,您可以单独使用globbing进行搜索。您的
*
可以存在于路径中的任何位置(并且可以扩展),而不仅仅是在末尾

grep -n -F -w "string" /var/www/html/*/app/config/database.php
这样做的好处是只查找指定为重要的路径

请注意,因为您说过要搜索字符串而不是re,所以
-F
选项可能是合适的

如果找不到您认为应该存在的文件,您可以尝试以下操作:

find /var/www/html/*/app -name database.php -print

验证是否确实在正确的位置查找此文件。

如果使用通配符指定所有database.php文件,则无需递归搜索目录(
-r
)。如果您的所有网站都遵循该路径结构,
grep“string”/var/www/html/*/app/config/database.php
就足够了。如果路径扩展导致零个文件,则将其更正为指向文件的实际位置。如果目录名中有空格,会发生什么情况?您是如何确定最佳深度值的?您能更好地解释您的答案吗?要处理文件名中的空白,请分别使用
-print0
-0
选项执行
find
xargs
命令(添加到我的答案中)。我们要查找的文件位于作为要查找的参数(
/var
)给定的目录下的五个目录级别。