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 上的特定文件类型的主要内容,如果未能解决你的问题,请参考以下文章