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

时间:2012-10-24 21:43:23

标签: grep

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

我确定它出现在 .yml 文件中,但我在grep手册中找不到如何指定文件类型。

4 个答案:

答案 0 :(得分:8)

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

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

答案 1 :(得分:1)

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

$ grep MYVAR *.yml

如果您的.yml个文件不在一个目录中,则可能更容易提高赌注并使用find

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

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

答案 2 :(得分:0)

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

答案 3 :(得分:0)

如果你的.yml文件都在一个目录中,那么cd到那个目录,然后......

grep MYWAR *.yml

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

grep MYWAR `find . -name \*.yml`

如果您不知道.yml文件所在目录的顶部并想要搜索整个系统......

grep MYWAR `find / -name \*.yml`

最后一个选项可能需要root权限才能读取所有目录。

上面的`字符是与键盘上的〜键一起定位的字符。