我们可以在特定文件(html文件)中的某些文件夹中递归搜索一个术语(例如“onblur”)吗?
grep -Rin "onblur" *.html
这不会返回任何内容。但是,
grep -Rin "onblur" .
从所有可用文件返回"onblur"
个搜索结果,例如文本(“。txt”),. mako,.jinja等。
答案 0 :(得分:32)
请考虑检查this answer和that 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 .
答案 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
用于递归搜索(当前目录中的所有文件和子目录中的所有文件)