7

我有很多文件,我想找到MYVAR.

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

4

4 回答 4

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

请注意,grep 默认区分大小写(通过 -i 表示忽略大小写),并接受正则表达式和字符串。

于 2012-10-24T21:47:10.050 回答
1

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

$ grep MYVAR *.yml

如果您的.yml文件不是全部​​在一个目录中,那么提高赌注和使用可能会更容易find

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

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

于 2012-10-24T21:49:14.483 回答
0

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

grep MYWAR *.yml

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

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

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

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

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

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

于 2012-10-24T21:59:36.943 回答
0
find . -name \*.yml -exec grep -Hn MYVAR {} \;
于 2012-10-24T21:50:28.067 回答