grep 递归查找 Linux 上的特定文件类型

Posted

技术标签:

【中文标题】grep 递归查找 Linux 上的特定文件类型【英文标题】:grep recursively for a specific file type on Linux 【发布时间】:2014-04-09 02:27:55 【问题描述】:

我们能否仅在特定文件(html 文件)中的某些文件夹中递归搜索一个词(例如“onblur”)?

grep -Rin "onblur" *.html

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

grep -Rin "onblur" .

从所有可用文件中返回 "onblur" 搜索结果,例如 text(".txt")、.mako、.jinja 等。

【问题讨论】:

man grep,搜索--include @kenorb 在这里给出了一个很好的答案:***.com/a/49772340/6862601 这能回答你的问题吗? grep, but only certain file extensions 【参考方案1】:

考虑检查this answer 和that one。

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

命令是:

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

在你的情况下是:

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

【讨论】:

您知道,仅链接的答案在 SE 上是不受欢迎的。您将希望从原始帖子中包含更多信息:-)【参考方案2】:
grep -r --include "*.html"  onblur .

从: How do I grep recursively?

【讨论】:

【参考方案3】:

您可能还喜欢 ag 'the silver searcher' -

ag --html onblur

它通过正则表达式搜索并且默认在当前目录中递归,并且具有预定义的搜索扩展集-在这种情况下--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。

【讨论】:

【参考方案4】:

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

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

还要注意 grep 接受以下内容:

grep mystring *.html 在当前文件夹中搜索 .html

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

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

【讨论】:

【参考方案5】:

请查看此answer,而不是类似的问题:grep, but only certain file extensions

这对我有用。在您的情况下,只需输入以下内容:

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

考虑一下

grep:命令

-r:递归

-i: 忽略大小写

-n: 每个输出行前面都有它在文件中的相对行号

--include \*.html: 使用 \ 转义,以防万一您的目录中的文件名带有星号

./:从当前目录开始。

【讨论】:

以上是关于grep 递归查找 Linux 上的特定文件类型的主要内容,如果未能解决你的问题,请参考以下文章

linux 上查找包含特定文本的所有文件

Linux查找文件内容小技巧

[Linux] 查找文件内容 grep

linux中grep和find的区别

如何使用find命令查找文件?

linux 命令怎么看文件数 find