我有很多文件,我想找到MYVAR
.
我确定它在.yml文件之一中,但我在手册中找不到grep
如何指定文件类型。
grep -rn --include=*.yml "MYVAR" your_directory
请注意,grep 默认区分大小写(通过 -i 表示忽略大小写),并接受正则表达式和字符串。
你不给 grep 一个文件类型,只是一个文件列表。你的 shell 可以扩展一个模式来为 grep 提供正确的文件列表,但是:
$ grep MYVAR *.yml
如果您的.yml
文件不是全部在一个目录中,那么提高赌注和使用可能会更容易find
:
$ find -name '*.yml' -exec grep MYVAR {} \+
这将从当前目录中递归地找到任何以 .yml 结尾的文件。然后,它将文件列表替换为一对花括号{}
。尾随\+
只是一个特殊的find
分隔符,表示-exec
切换已完成。结果是匹配文件列表并将它们交给 grep。
如果所有 .yml 文件都在一个目录中,则 cd 到该目录,然后...
grep MYWAR *.yml
如果所有 .yml 文件都在多个目录中,则 cd 到这些目录的顶部,然后...
grep MYWAR `find . -name \*.yml`
如果您不知道 .yml 文件所在目录的顶部,并且想要搜索整个系统...
grep MYWAR `find / -name \*.yml`
最后一个选项可能需要 root 权限才能读取所有目录。
上面的 ` 字符是与键盘上的 ~ 键一起定位的字符。
find . -name \*.yml -exec grep -Hn MYVAR {} \;