📌 项目:https://github.com/noahdunnagan/fsearch | 星数:1,184 | 语言:Rust | 协议:MIT | 更新:2026-10-09
FSearch是一个用Rust编写的macOS全盘文件搜索工具,支持模糊匹配、容错搜索和文件内容grep,在800万文件的索引库上实现1ms级别的搜索响应。项目由noahdunnagan开发,在GitHub获得1,184颗星,采用MIT协议,提供命令行工具和后台daemon两种运行模式。
FSearch通过增量索引和内存映射实现极速搜索,适合需要频繁查找文件的开发者和系统管理员。如果你想了解AI驱动的本地搜索方案,可以参考我们的SCM本地AI搜索指南,对比传统文件搜索与语义搜索的能力差异。
模糊匹配与容错:基于Levenshtein距离算法实现拼写容错,输入fserch也能匹配到FSearch,支持拼音首字母匹配中文文件名(输入wj匹配文件),子串匹配不要求完整输入,打字时实时显示结果(incremental search)。
内容索引与grep:除文件名索引外,可选择对文本文件内容建索引(支持UTF-8/GBK/Shift-JIS编码),搜索时同时匹配文件名和文件内容,内容匹配高亮显示匹配行上下文,支持正则表达式和文件类型过滤(.rs/.py/.md)。
daemon模式与CLI:后台daemon常驻内存维护索引(文件变更时增量更新,通过FSEvents监听),CLI命令即时查询无需冷启动,支持JSON输出格式便于脚本集成,多磁盘索引可配置排除目录(node_modules/.git等)。
| ✅ 优势 | ❌ 劣势 |
|---|---|
| 1ms级搜索响应(800万文件索引),比Spotlight和find命令快一到两个数量级 | 仅支持macOS(依赖FSEvents),Windows和Linux用户无法使用 |
| 模糊匹配加拼音首字母加子串匹配,不需要记住完整文件名也能找到目标 | 内容索引仅支持文本文件,二进制文件(Office/PDF)内容无法索引 |
| 内容索引支持全文搜索,不仅搜文件名还能搜文件内文本 | 首次全盘索引耗时较长(800万文件约需15-30分钟) |
| daemon模式增量更新索引,FSEvents监听文件变更无需全量重建 | 内存占用随索引规模增长,800万文件索引约占200-300MB内存 |
| JSON输出格式便于脚本集成,可替代find/locate纳入命令行工作流 | 无GUI界面,纯CLI工具对非技术用户不友好 |
FSearch专注文件名和文件内容搜索,搜索速度通过预建索引实现1ms响应;Spotlight搜索范围更广(含邮件/日历/网页历史等)但文件搜索速度较慢。FSearch支持模糊匹配和拼音首字母,Spotlight不支持。
800万文件的文件名索引约占用50-80MB磁盘空间,如果开启内容索引则根据文本文件数量增长到200-500MB。索引文件存储在用户目录下,可随时删除重建。
日常文件查找可以替代(速度优势明显),但复杂的条件组合(按权限/大小/时间范围过滤)仍需使用find命令。内容搜索功能可替代基础grep,但缺少grep的高级正则和管道组合能力。