2012-10-24 42 views

回答

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

请注意,grep的情况下是默认敏感(通过-i告诉忽略大小写),并接受正则表达式以及字符串。

+0

非常感谢。 ;) –

+0

我不知道这个开关!好一个。 –

1

你不给grep一个文件类型,只是一个文件列表。壳牌可扩展的模式给用grep正确的文件列表,但:

$ grep MYVAR *.yml 

如果您.yml文件没有在同一个目录中,可能会更容易加大了赌注,并使用find

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

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

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

如果所有.yml文件在一个目录,然后cd到该目录,然后......

grep MYWAR *.yml 

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

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

如果你不知道你的.yml文件位于这些目录的顶部,并希望搜索整个系统...

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

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

上面的字符是键盘上的〜键。

相关问题