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

如何使用grep只搜索特定的文件类型?,grep,Grep,我有很多文件,我想找到MYVAR的位置 我确信它在一个.yml文件中,但我在grep手册中找不到如何指定文件类型 grep -rn --include=*.yml "MYVAR" your_directory 请注意,grep默认情况下是区分大小写的(pass-i表示忽略大小写),并且接受正则表达式和字符串 你没有给grep一个文件类型,只是一个文件列表。您的shell可以扩展一个模式,为grep提供正确的文件列表,不过: $ grep MYVAR *.yml 如果您的.yml文件不都在一个

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

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

grep -rn --include=*.yml "MYVAR" your_directory

请注意,grep默认情况下是区分大小写的(pass-i表示忽略大小写),并且接受正则表达式和字符串

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

$ grep MYVAR *.yml
如果您的
.yml
文件不都在一个目录中,那么增加赌注并使用
查找
可能会更容易:

$ find -name '*.yml' -exec grep MYVAR {} \+

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

如果所有.yml文件都在一个目录中,则将cd发送到该目录,然后

find . -name \*.yml -exec grep -Hn MYVAR {} \;
grep MYWAR *.yml
grep MYWAR `find . -name \*.yml`

如果所有的.yml文件都在多个目录中,请将cd放到这些目录的顶部,然后

grep MYWAR *.yml
grep MYWAR `find . -name \*.yml`
如果你不知道你的.yml文件所在目录的顶部,并且想搜索整个系统

grep MYWAR `find / -name \*.yml`
最后一个选项可能需要root权限才能读取所有目录


上面的`字符与键盘上的~键位于一起。

我不知道这个开关!不错。