对于Linux上的特定文件类型递归grep

时间:2014-03-06 12:35:22

标签: linux terminal grep

我们可以在特定文件(html文件)中的某些文件夹中递归搜索一个术语(例如“onblur”)吗?

grep -Rin "onblur" *.html

这不会返回任何内容。但是,

grep -Rin "onblur" .

从所有可用文件返回"onblur"个搜索结果,例如文本(“。txt”),. mako,.jinja等。

5 个答案:

答案 0 :(得分:32)

请考虑检查this answerthat one

这也可能对您有所帮助:grep certain file types recursively | commandlinefu.com

命令是:

grep -r --include="*.[ch]" pattern .

在你的情况下它是:

grep -r --include="*.html" "onblur" .

答案 1 :(得分:4)

grep -r --include "*.html"  onblur .

来自: How do I grep recursively?

答案 2 :(得分:1)

你可能也喜欢ag'the silver searcher' -

ag --html onblur

它通过regexp进行搜索,默认情况下在当前目录中是递归的,并且具有预定义的搜索扩展集 - 在这种情况下--html映射到.htm,.html,.shtml,.xhtml。默认情况下,还会忽略二进制文件,打印文件名,行号和颜色输出。

一些选项 -

-Q --literal
          Do not parse PATTERN as a regular expression. Try to match it literally.
-S --smart-case
          Match case-sensitively if there are any uppercase letters in PATTERN, 
          case-insensitively otherwise. Enabled by default.
-t --all-text
          Search all text files. This doesn't include hidden files.
   --hidden
          Search hidden files. This option obeys ignored files.

对于支持的文件类型列表,请运行ag --list-file-types

它似乎唯一缺少的是能够指定带扩展名的文件类型,在这种情况下,您需要使用--include返回grep。

答案 3 :(得分:0)

看看这个answer,转而回答类似的问题:grep, but only certain file extensions

这对我有用。您可以输入以下内容:

grep -inr "onblur" --include \*.html ./

考虑

  • grep:命令

  • -r:递归

  • -i:忽略大小写

  • -n:每个输出行在文件中均以其相对行号开头

  • --include \*.html:如果文件名中带有星号的目录,请使用\进行转义

  • ./:从当前目录开始。

答案 4 :(得分:0)

为了能够通过键入 grepy mystring . 仅从 .py 文件进行 grep,我在 bashrc 中添加了以下行:

alias grepy='grep -r --include="*.py"' 

另请注意,grep 接受以下内容:

grep mystring *.html 用于当前文件夹中的 .html 搜索

grep mystring */*.html 用于递归搜索(不包括当前目录中的任何文件!)。

grep mystring .*/*/*.html 用于递归搜索(当前目录中的所有文件和子目录中的所有文件)