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
)给定的目录下的五个目录级别。