fsearch 是一个跑在 macOS 上的全盘文件搜索工具。这个 软件工具 用 Rust 写,按文件名在约 1 毫秒内找到任何文件,容错拼写错误,还能带索引搜索文件内容。作为一个 开源软件,它可以当 CLI 用(带一个小守护进程),也可以当 Rust crate 链接进自己的程序。
![]()
场景痛点
Mac 上找文件要么靠 Spotlight 索引不准,要么靠 mdfind 命令行但不支持模糊拼写。记不清文件名是 main 还是 mian,找半天找不到。想按类型、大小、修改时间组合过滤,还想搜文件内容,不想等索引。做开发者工具和效率工具的人想要的,不是一个只按文件名匹配的搜索器,是一个 1 毫秒出结果、拼错也能找到、还能搜内容的全盘搜索。
主要功能特点1 毫秒全盘搜索
M4 Max 上 770 万文件和文件夹,按文件名全盘搜索 p50 1.3 毫秒,文件内搜索 p50 9 毫秒。新文件、重命名或删除约 0.1 秒就出现。首次爬盘约 20 秒一次性完成。守护进程内存 30 到 135 MB。这种 macOS 级别的性能,比 Spotlight 快。
容错拼写加组合过滤
5 个字母以上的词容忍一个拼写错误,mian.rs 能找到 main.rs。支持 'exact、^prefix、suffix$ 和 !exclude。过滤器包括 ext:、type:、kind:、in:、size:、mtime:、re:、path:、grep:、regex:、sym:、limit:。内容搜索智能大小写。
对比 fff 快 10 倍
在 Chromium 50 万文件目录里,fsearch 文件名搜索 1.1 毫秒,fff 是 13.8 毫秒。文件内搜索 5.6 毫秒对 53 毫秒。拼写错误仍找到文件 98% 对 88%。启动后就绪 50 毫秒对 2.5 秒。内存 50 MB 全盘对 358 MB 那个文件夹。这种系统工具级别的轻量,比同类工具省资源。
CLI 加 Rust crate 加 API
命令行直接搜,也可以通过 unix socket 发 JSON lines 查询,或用 fsearch stdio。还能当 Rust crate 链接进自己的程序。应用和 CLI 共享一个索引,第一个进程拥有索引其他进程跟随。
FSEvents 增量更新
用 getattrlistbulk 爬盘一次,然后通过 FSEvents 保持更新。重启只回放变化的部分。名字存在一个 mmap 文件里按文件夹排列,内容搜索用 trigram 索引,匹配结果从磁盘实时读不过期。
![]()
特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.