我有很多文件,我想找到MYVAR
的位置。
我确定它出现在 .yml 文件中,但我在grep
手册中找不到如何指定文件类型。
答案 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权限才能读取所有目录。
上面的`字符是与键盘上的〜键一起定位的字符。