共计 4684 个字符,预计需要花费 12 分钟才能阅读完成。
项目地址:https://github.com/BurntSushi/ripgrep
搜索速度快的不要不要的
ripgrep 是一个面向行的搜索工具,可以在尊重 gitignore 规则的同时递归搜索当前目录中的正则表达式模式。ripgrep 在 Windows,macOS 和 Linux 上拥有一流的支持,每个版本 都有二进制下载。ripgrep 类似于其他流行的搜索工具,如 The Silver Searcher,ack 和 grep
安装
centos7 安装
yum install yum-utils -y
yum-config-manager --add-repo=https://copr.fedorainfracloud.org/coprs/carlwgeorge/ripgrep/repo/epel-7/carlwgeorge-ripgrep-epel-7.repo
yum install ripgrep -y
二进制安装
wget https://github.com/BurntSushi/ripgrep/releases/download/0.10.0/ripgrep-0.10.0-x86_64-unknown-linux-musl.tar.gz
tar xvf ripgrep-0.10.0-x86_64-unknown-linux-musl.tar.gz
cd ripgrep-0.10.0-x86_64-unknown-linux-musl
cp rg /usr/bin/
好了,直接使用 rg 命令把!,享受速度超快的搜索
指定文件类型搜索
rg ‘ 关键词 ’ -g ‘*.php’
更多的搜索方法请查看官网说明
选项 | 说明 | 备注 |
---|---|---|
-A, –after-context <NUM> |
显示匹配内容后的 <NUM> 行。 |
会覆盖 --context 选项。 |
-B, –before-context <NUM> |
显示匹配内容前的 <NUM> 行。 |
会覆盖 --context 选项。 |
-b, –byte-offset | 显示匹配内容在文件中的字节偏移。 | 和 -o 一起使用时只打印偏移。 |
-s, –case-sensitive | 启用大小写敏感。 | 会覆盖 -i(--ignore case) 和 -S(--smart case) 选项。 |
–color <WHEN> |
什么时候使用颜色,默认值为:auto。可选值有:never、auto、always、ansi。 | 如果 --vimgre 选项被使用,那么默认值是 never。 |
–column | 显示匹配所在列数 (从 1 开始)。 | 如果不显示列号可用 --no-column 取消掉。 |
-C, –context <NUM> |
显示匹配内容的前面和后面的 <NUM> 行。 |
该选项会覆盖 -B 和 -A 选项。 |
–context-separator <SEPARATOR> |
在输出结果中分隔非连续的输出行。 | 可以使用 \x7F 或 \t ,默认是 -- 。 |
-c, –count | 只显示匹配结果的总行数。 | 如果只有一个文件给 Ripgrep,那么只打印匹配结果的总行数。可以用 --with-filename 来强制打印文件名,该选项会覆盖 --count-matches 选项。 |
–count-matches | 只显示匹配结果的总次数。 | 可以用 --with-filename 来强制在只有一个文件时也输出文件名。 |
–debug | 显示调试信息。 | |
–dfa-size-limit <NUM+SUFFIX?> |
指定正则表达式 DFA 的上限,默认为 10M。 | 该选项允许接受与 --max-filesize 相同大小的后缀标志。 |
-E, –encoding <ENCODING> |
指定文本编码格式, 默认是 auto。 | 更多编码格式参考:https://encoding.spec.whatwg.org/#concept-encoding-get |
-f, –file <PATTERNFILE> … |
从文件中读入搜索模式, 一行一个模式。 | 结合 -e/--regexp 参数可多个文件一起组合使用,所有组合会被匹配。 |
–files | 打印所有将被搜索的文件路径。 | 以 rg <options> --files [PATH...] 方式使用,不能增加搜索模式。 |
-l, –files-with-matches | 只打印有匹配的文件名。 | 该选项会覆盖 --files-without-match 。 |
–files-without-match | 只打印无匹配的文件名。 | 该选项会覆盖 --file-with-matches 。 |
-F, –fixed-strings | 把搜索模式当成常规文字而非正则表达式。 | 该选项可以用 --no-fixed-strings 来禁止。 |
-L, –follow | 该选项会递归搜索符号链接,默认是关闭的。 | 该选项可以用 --no-follow 选项来手动关闭。 |
-g, –glob <GLOB> … |
包含或排除用于搜索匹配给定的文件和目录,可以用 ! 来取反。 | 该选项可以多次使用,会匹配 .gitignore 中的规则。 |
-h, –help | 打印帮助信息。 | |
–heading | 打印文件名到匹配内容的上方而不是在同一行。 | 该选项是默认启用的,可以用 --no-heading 来关闭。 |
–hidden | 启用搜索隐藏文件和文件夹。 | 默认情况下是忽略搜索隐藏文件和文件夹的, 可用 --no-hidden 来关闭。 |
–iglob <GLOB> … |
作用同 --glob , 但这个选项大小写不敏感。 |
|
-i, –ignore-case | 指定搜索模式中的大小写不敏感。 | 该选项会被 -s/--case-sensitive 或 -S/--smart-case 覆盖。 |
–ignore-file <PATH> … |
指定搜索时需忽略的路径,格式同 .gitignore , 可同时指定多个。 |
如果存在多个 --ignore-file 标记时,后面优先级会更高。 |
-v, –invert-match | 反向匹配,显示与给定模式不匹配的行。 | |
-n, –line-number | 显示匹配内容所在文件的行数,该选项默认是打开的。 | |
-x, –line-regexp | 只显示整行都匹配搜索模式的行。 | 该选项会覆盖 --word-regexp 。 |
-M, –max-columns <NUM> |
不打印长于 <NUM> 中指定节字大小的匹配行内容,只显示该行的匹配数。 |
|
-m, –max-count <NUM> |
限制一个文件中最多 <NUM> 行被匹配。 |
|
–max-depth <NUM> |
限制文件夹递归搜索深度。 | 如:rg --max-depth 0 dir/ 则表示不执行任何搜索。 |
–max-filesize <NUM+SUFFIX?> |
搜索时忽略大于 <NUM> byte 的文件。 |
SUFFIX 的单位可以是:K、M、G,默认是:byte。 |
–mmap | 尽量使用 Memory Maps 进行搜索,这样速度会更快。该选项是默认行为。 | 如果使用 --mmap 搜索文件时 Ripgrep 发生意外中止,可使用 --no-mmap 选项关闭它。 |
–no-config | 不读取 configuration 文件, 并忽略 RIPGREP_CONFIG_PATH 变量。 | |
–no-filename | 不要打印匹配文件的文件名。 | |
–no-heading | 不在每个匹配行上方打印文件名,而是在匹配行的同一行上打印。 | |
–no-ignore | 不读取忽略文件,如:.gitignore、.ignore 等。 | 该选项可以用 --ignore 关闭。 |
–no-ignore-global | 不读取全局的 ignore 文件,比如: $HOME/.config/git/ignore 。 |
该选项可以用 --ignore-global 关闭。 |
–no-ignore-messages | 取消解析 .ignroe、.gitignore 文件中相关错误信息。 | 该选项可通过 --ignore-messages 关闭。 |
–no-ignore-parent | 不读取父文件夹里的 .gitignore、.ignore 文件。 | 该选项可通过 --ignore-parent 关闭。 |
–no-ignore-vcs | 不读取版本控制器中的 .ignore 文件。 | 该选项可通过 --ignore-vcs 关闭。 |
-N, –no-line-number | 不打印匹配行数。 | |
–no-messages | 不打印打开和读取文件时相关错误信息。 | |
-0, –null | 在打印的文件路径后加一个 NUL 字符。 | 这对于结合 Xargs 使用时是非常有用的。 |
-o, –only-matching | 只打印匹配的内容,而不是整行。 | |
–passthru | 同时打印文件中匹配和不匹配的行。 | |
–path-separator <SEPARATOR> |
路径分隔符,在 Linux 上默认是 /,Windows 上默认是 \。 | |
–pre <COMMAND> |
用 <COMMAND> 处理文件后,并将结果传递给 Ripgrep。 |
该选项存在一定的性能损耗。 |
-p, –pretty | 该选项是 --color always --heading --line-number 的别名。 |
|
-q, –quiet | 该选项不会打印到标准输出, 如果匹配发现时就停止搜索。 | 当 RipGrep 用于 exit 代码时该选项非常有用。 |
–regex-size-limit <NUM+SUFFIX?> |
设置已编译正则表达式的上限,默认限制为 10M。 | |
-e, –regexp <PATTERN> … |
使用正则来匹配搜索条件。 | 该选项可以多次使用,可打印匹配任何模式的行。 |
-r, –replace <REPLACEMENT_TEXT> |
用相应文件内容代替匹配内容打印出来。 | |
-z, –search-zip | 在 gz、bz2、xz、lzma、lz4 文件类型中搜索。 | 该选项可通过 --no-search-zip 关闭。 |
-S, –smart-case | 如果全小写,则大小写不敏感,否则大小写敏感。 | 该选项可通过 -s/--case-sensitive 和 -i/--ignore-case 来关闭。 |
–sort <SORTBY> |
将输出结果按升序进行排序,可排序类型有:path、modified、accessed、created。 | |
–sortr <SORTBY> |
将输出结果按降序进行排序,可排序类型有:path、modified、accessed、created。 | |
–stats | 打印出统计结果。 | |
-a, –text | 搜索二进制文件。 | 该选项可通过 --no-text 关闭。 |
-j, –threads <NUM> |
搜索时要使用的线程数。 | |
-t, –type <TYPE> … |
只搜索指定的文件类型。 | 可以通过 --type-list 来列出支持的文件类型。 |
–type-add <TYPE_SPEC> … |
添加一种文件类型。 | |
–type-clear <TYPE> … |
清除默认的文件类型。 | |
–type-list | 列出所有内置文件类型。 | |
-T, –type-not <TYPE> … |
不要搜索某种文件类型。 | |
-u, –unrestricted | -u 搜索.gitignore 里的文件, -uu 搜索隐藏文件,-uuu 搜索二进制文件。 |
|
-V, –version | 打印版本信息。 | |
–vimgrep | 每一次匹配都单独打印一行,如果一行有多次匹配会打印成多行。 | |
-H, –with-filename | 打印匹配的文件路径,该选项默认打开。 | 该选项可通过 --no-filename 关闭。 |
-w, –word-regexp | 把搜索参数作为单独单词匹配。 | 该选项会覆盖 --line-regexp 选项。 |
更多命令行选项,可通过 rg --help
自行查看。
参考文档
运维之美
正文完