如何使用grep只搜索特定的文件类型?

Tom*_*uce 2 grep

我有很多文件,我想找到它的位置MYVAR.

我确定它是在一个.yml文件中但我在grep手册中找不到如何指定文件类型.

Abr*_*m P 8

grep -rn --include=*.yml "MYVAR" your_directory
Run Code Online (Sandbox Code Playgroud)

请注意,默认情况下grep区分大小写(传递-i告诉忽略大小写),并接受正则表达式和字符串.


Ben*_*ham 5

您没有为 grep 提供文件类型,而只是提供文件列表。不过,您的 shell 可以扩展一个模式来为 grep 提供正确的文件列表:

$ grep MYVAR *.yml
Run Code Online (Sandbox Code Playgroud)

如果您的.yml文件并非全部位于一个目录中,那么提高赌注并使用find

$ find -name '*.yml' -exec grep MYVAR {} \+
Run Code Online (Sandbox Code Playgroud)

这将从当前目录并递归地更深地找到任何以 .yml 结尾的文件。然后它将文件列表替换为一对大括号{}。尾随\+只是一个特殊的find分隔符,表示-exec切换已完成。结果是匹配文件列表并将它们交给 grep。