ripgrep(简称rg)是一个超级快速且功能强大的命令行工具,用来在文件中进行文本搜索。它是用Rust编写的,通常比其它类似的工具(比如grep)要快,尤其是在处理大目录或者大文件的时候。简单来说,ripgrep就是grep的升级版,它考虑了你系统中的.gitignore文件,如果某些文件、扩展名或目录被忽略,它会自动跳过,从而提升搜索速度。
1.安装ripgrep
虽然大部分linux系统预装了grep,但是ripgrep默认并没有安装。不过它可以通过包管理器很方便地安装,几乎支持所有主流的Linux发行版。
Debian/Ubuntu系列:
sudoaptupdate
sudoaptinstallripgrep
CentOS/RHEL系列:
sudoyuminstallepel-release
sudoyuminstallripgrep
sudodnfinstallripgrep

ArchLinux:
pacman-Sripgrep
emergesys-apps/ripgrep
openSUSE(15.1及以上版本):
sudozypperinstallripgrep
DebianBuster或更高版本,Ubuntu18.10及以上版本:
sudoaptinstallripgrep
2.如何使用ripgrep
如果你对grep已经很熟悉了,那么使用ripgrep会很轻松。其实它的工作原理很简单,你只需要提供一个搜索模式和文件名,ripgrep就会帮你找到匹配的内容并显示出来。与grep类似,ripgrep也支持在文件夹中递归搜索,并且会显示文件内容和匹配行的位置。
比如,如果你想在Cargo.toml文件中搜索description,你可以这么做:
$rgdescriptionCargo.toml
这时ripgrep会返回匹配到的行,显示文件名和行号。
3.高级功能
上下文搜索有时候你可能想查看匹配的文本前后的上下文行,特别是在查看代码时。你可以使用-C(或–context)来指定显示匹配行前后多少行。例如,显示匹配前后3行:
$rg-C3“description”
如果你只关心匹配行之后的内容,可以使用-A,如果只关心之前的内容,可以用-B。例如:
$rg-A3“description”#匹配后3行
$rg-B3“description”#匹配前3行
列出匹配行的列号如果你是vim用户,或者需要精确到某行某列,可以用–column标志来显示列号:
$rg–column“description”
正则表达式搜索ripgrep支持正则表达式,就像grep一样。如果你想搜索某个模式,比如以def开头的行,你可以这么做:
多线程搜索如果你的代码库很大,ripgrep还支持多线程搜索,可以提高效率。例如,指定4个线程进行搜索:
$rg-j4“TODO”
排除某些文件如果你想排除某些文件或者目录,可以使用–glob参数。比如,排除node_modules目录:
$rg“Search_term”–glob‘!node_modules/*’
忽略大小写如果你希望搜索不区分大小写,可以加上-i参数:
$rg-i“example”
搜索压缩文件ripgrep还可以搜索压缩文件(如.zip文件),你只需要加上-z参数:
$rg-z“pattern”archive.zip
发表评论