你是否曾为查找压缩包、PDF 或 Office 文件中的关键信息而苦恼?rga
(ripgrep-all)是一款功能强大的命令行工具,它不仅继承了 grep
的快速检索能力,还能深入压缩包和二进制文件,堪称文件搜索领域的“瑞士军刀”。本指南将带你从安装到实战,全面掌握 rga
,让它在 Linux 和 Windows 上助你化繁为简,轻松通过正则表达式搜索所有文件中的内容!
第一部分:初识 rga
什么是 rga
?
rga
,全称 ripgrep-all
,由开发者 phiresky 打造,是基于超快文本搜索工具 ripgrep
(简称 rg
)的增强版。与专注于纯文本的 rg
不同,rga
通过内置适配器扩展了对多种文件格式的支持,能够直接搜索以下内容:
- 纯文本:如
.txt
、.log
、.conf
等。 - 二进制文档:如 PDF、DOCX、XLSX 等。
- 压缩文件:如 ZIP、TAR、GZIP 等。
- 其他类型:如 SQLite 数据库,甚至图像中的文本(需 OCR 支持)。
这种多功能性让 rga
在渗透测试(例如查找配置文件中的凭据)、数据恢复和代码审计中表现出色。其高性能和跨平台特性也使其成为 Linux 和 Windows 用户的得力助手。
rga
的核心优势
- 超高速度:继承
ripgrep
的多线程和优化算法,搜索效率惊人。 - 格式通吃:无需解压或转换,直接深入复杂文件。
- 正则支持:内置强大的正则表达式引擎,应对复杂查询游刃有余。
- 跨平台兼容:支持 Linux、Windows 和 macOS,无缝切换。
第二部分:在 Linux(Kali)上安装 rga
安装步骤
方法 1:预编译二进制安装(推荐)
-
下载二进制文件
访问rga
的 GitHub Release 页面:https://github.com/phiresky/ripgrep-all/releases
选择最新版本(例如
v0.10.6
),下载 Linux 预编译包(如ripgrep-all-v0.10.6-x86_64-unknown-linux-musl.tar.gz
)。 -
解压文件
在终端进入下载目录并解压:cd ~/Downloads tar -xzf ripgrep-all-v0.10.6-x86_64-unknown-linux-musl.tar.gz
-
移动到系统路径
将rga
可执行文件移至全局路径:sudo mv ripgrep-all-v0.10.6-x86_64-unknown-linux-musl/rga /usr/local/bin/
-
验证安装
检查版本号确认成功:rga --version
示例输出:
ripgrep-all (rga) 0.10.6
方法 2:源码编译安装
若需最新功能或自定义,可选择源码安装:
-
安装 Rust
rga
基于 Rust 开发,先安装 Rust 环境:curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh source $HOME/.cargo/env
-
克隆源码
下载rga
仓库:git clone https://github.com/phiresky/ripgrep-all.git cd ripgrep-all
-
编译安装
使用 Cargo 构建并安装:cargo build --release sudo cp target/release/rga /usr/local/bin/
-
验证安装
运行rga --version
检查版本。
可选:安装 fzf
若想体验 rga fzf
的交互式搜索,需安装 fzf
:
sudo apt install fzf
验证:
fzf --version
第三部分:在 Windows 上安装 rga
安装步骤
方法 1:通过 Scoop 安装(推荐)
Scoop 是 Windows 的轻量包管理器:
-
安装 Scoop
在 PowerShell 中运行:iwr -useb get.scoop.sh | iex
-
安装
rga
scoop install ripgrep-all
-
验证
rga --version
方法 2:预编译二进制安装
-
下载文件
在 GitHub Release 页面下载 Windows 版本(如ripgrep-all-v0.10.6-x86_64-pc-windows-msvc.zip
)。 -
解压文件
使用解压工具或命令行:Expand-Archive -Path .\ripgrep-all-v0.10.6-x86_64-pc-windows-msvc.zip -DestinationPath .\rga
-
配置路径
将rga.exe
放入自定义目录(如C:\Tools\rga
),然后添加至用户 PATH:[Environment]::SetEnvironmentVariable("Path", $env:Path + ";C:\Tools\rga", "User")
-
验证安装
重启终端,运行:rga --version
可选:安装 fzf
通过 Scoop 安装:
scoop install fzf
验证:
fzf --version
第四部分:rga
基础用法
安装完成后,来看 rga
的核心功能。以下示例适用于 Kali 和 Windows(Windows 可使用 PowerShell 或 Git Bash)。
基本搜索
-
搜索当前目录:
rga "password"
输出包含 “password” 的文件和行。
-
指定路径:
rga "secret" /home/user/docs
-
忽略大小写:
rga -i "password"
文件类型过滤
-
仅搜索 PDF:
rga --type pdf "confidential"
-
排除特定类型:
rga --type-not zip "data"
正则表达式
-
查找邮箱:
rga "[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}"
-
匹配 IP 地址:
rga "\b\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}\b"
输出控制
-
仅显示文件名:
rga -l "key"
-
显示上下文:
rga -C 2 "error"
(显示匹配行前后 2 行)
第五部分:rga
高级用法
搜索非文本文件
-
搜索 PDF:
rga "admin" *.pdf
-
搜索 ZIP 文件内容:
rga "flag" archive.zip
-
搜索 SQLite 数据库:
rga "user" database.sqlite
结合管道
-
筛选结果:
rga "error" | grep "critical"
-
统计匹配数量:
rga "fail" | wc -l
静默输出
- 保存结果到文件:
rga --silent "pass" > results.txt
第六部分:rga
与 fzf
的协作
安装 rga
后,你会注意到一个额外的 rga fzf
命令,但需先安装 fzf
才能使用。两者的区别如下:
rga
:独立的搜索工具,输出静态结果。rga fzf
:将rga
结果通过管道传递给fzf
,提供交互式模糊筛选。
什么是 fzf
?
fzf
是一个开源的命令行模糊搜索工具,以其快速、灵活和交互式的特点广受开发者喜爱。它可以通过模糊匹配的方式,从大量文本输入中快速筛选出目标内容。fzf
的典型应用场景包括文件查找、命令历史搜索和交互式数据筛选等。
- 核心优势:
- 高效的模糊匹配算法。
- 支持实时预览和自定义快捷键。
- 跨平台支持(Linux、Windows、macOS)。
- 安装方式:在 Windows 上可通过 Scoop 安装(
scoop install fzf
),Linux 上可使用包管理器(如sudo apt install fzf
)。
单独使用时,fzf
需要通过管道接收输入(例如 ls | fzf
),而与 rga
结合后,它能极大提升复杂文件搜索的交互体验。
rga-fzf
rga-fzf
是 rga
(ripgrep-all)提供的一个辅助命令,通过管道将 rga
的搜索结果传递给 fzf
,实现交互式模糊筛选。
- 工作原理:
rga
负责从文件(包括压缩包、二进制文件等)中检索匹配内容。fzf
接收这些结果,提供动态筛选界面,用户可输入关键词进一步缩小范围。
特性 | rga | rga-fzf |
---|---|---|
本质 | 独立搜索工具 | rga + fzf 组合 |
输出 | 静态文本结果 | 交互式筛选界面 |
适用场景 | 批量搜索、脚本处理 | 探索性搜索、人工筛选 |
依赖 | 仅需 rga | 需 rga 和 fzf |
基本用法
- 交互式搜索:
rga-fzf "error"
- 搜索包含 “error” 的文件,进入
fzf
交互界面。 - 使用上下键导航,Enter 打开文件,Ctrl+C 退出。
- 搜索包含 “error” 的文件,进入
实战示例
-
渗透测试:查找凭据
rga-fzf "password|key|secret"
- 搜索敏感关键词并交互筛选目标文件。
-
搜索压缩包:
rga "flag" *.zip | fzf --preview "rga --pretty --context 3 {q} {}"
- 直接检索 ZIP 文件内容并预览。
-
批量导出:
rga "error" logs/ | fzf -m > errors.txt
- 使用
-m
多选模式,将结果保存到文件。
- 使用