bash,根据其内容在子目录中查找文件

bash,根据其内容在子目录中查找文件,bash,Bash,我的目录结构如下: project1/config.ini project2/config.ini project3/config.ini 等等 我想找出包含特定字符串的config.ini文件,比如“database=a”我会使用grep: cd your_folder && grep -r "database=a" * 您可以使用grep: grep -r -l --include=config.ini database=a . 这将在中对数据库=a进行递归搜索(-r

我的目录结构如下:

project1/config.ini
project2/config.ini
project3/config.ini 
等等
我想找出包含特定字符串的config.ini文件,比如“database=a”

我会使用grep:

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

您可以使用
grep

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

这将在
中对
数据库=a
进行递归搜索(
-r
),仅在名为
config.ini
的文件中进行,并仅列出匹配的文件(
-l
)。

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

find . -type f -name config.ini -exec grep -l "database=a" {} +
另一个简短的变体:

grep 'database=a' ./**/config.ini
#                   ^^-recursively search for all `config.ini` files
警告:仅当您没有zilion配置文件时有效-在其他情况下,您可能会得到一个太长的
参数列表
错误

如果只需要文件名

grep -l 'database=a' ./**/config.ini
最简单的:


grep-ri“database=a”*/config.ini

-1问题没有显示任何研究成果。在这种情况下,“研究成果”是几次不成功的尝试,这会使问题变得不那么清楚。我欣赏一些问题的简洁,在短时间内已经有了3个答案。这一点应该考虑在内。为什么这里需要
cd
?+1我喜欢这个答案,因为它完全符合POSIX规范,没有GNU扩展,也没有放弃性能或清晰度。(尽管如此,我还是会使用
grep-F
)我认为您必须在bash中启用
globstar
,才能使其正常工作,不是吗?