FSearch:用Rust构建的macOS全盘文件搜索引擎,1ms搜索800万文件

📌 项目: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和macOS Spotlight有什么区别?

FSearch专注文件名和文件内容搜索,搜索速度通过预建索引实现1ms响应;Spotlight搜索范围更广(含邮件/日历/网页历史等)但文件搜索速度较慢。FSearch支持模糊匹配和拼音首字母,Spotlight不支持。

FSearch的索引会占用多少磁盘空间?

800万文件的文件名索引约占用50-80MB磁盘空间,如果开启内容索引则根据文本文件数量增长到200-500MB。索引文件存储在用户目录下,可随时删除重建。

FSearch能否替代find和grep命令?

日常文件查找可以替代(速度优势明显),但复杂的条件组合(按权限/大小/时间范围过滤)仍需使用find命令。内容搜索功能可替代基础grep,但缺少grep的高级正则和管道组合能力。