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