FSearch:140 万条索引、零等待的 Linux 文件搜索工具
【免费下载链接】fsearchA fast file search utility for Unix-like systems based on GTK3项目地址: https://gitcode.com/gh_mirrors/fs/fsearch
在开发机上找一份 GTK 文档,find要扫完整个家目录才肯给结果,locate的数据库又常常过期。我后来换成了 FSearch,它基于 GTK3、用 C 语言编写,先把选定目录建成索引,再在百万级文件里做到输入即出结果。想给 Linux 找一个 Everything 的替代方案,这款 Linux 快速搜索文件工具值得放进试用名单。
🔧 各发行版安装方式
官方建议优先装稳定版,开发版留给尝鲜。Ubuntu 和 Debian 用 PPA 源,分为 Stable 与 Daily 两个渠道;Arch Linux 走 AUR,fsearch是稳定版、fsearch-git是开发版;Fedora / RHEL / CentOS 用 COPR 仓库,同样分 Stable 与 Nightly;不想折腾仓库的,Flatpak 一条命令就能装,只是部分功能受沙箱限制。此外 Debian、openSUSE 也有 OpenBuildService 包。
首次启动会提示你选择要索引的目录,一般从家目录开始,之后可以随时增删。建议顺手用通配符排除掉node_modules这类无关目录,索引体积更小,更新也更快。目录越多耗时越长,但索引一次建好后,后续每次搜索都是即时返回,状态栏会显示当前索引里的文件总数,方便你确认范围有没有漏。
⚡ 输入即搜索:上手体验与搜索语法
核心交互只有一个动作:在搜索框里打字,结果立刻刷新,不需要按回车。
想查得更精确,搜索框直接支持一套小语法。通配符*和?负责模糊匹配;PCRE2 正则能写复杂模式;类型过滤器可以只搜文件、只搜文件夹或两者都搜;排除规则同样用通配符表达式,把不想进索引的路径挡在门外。另外把路径前缀写进查询,例如/usr/share gtk,就能把范围钉在特定目录下,右侧的类型下拉框则用来快速切换文件/文件夹过滤。
结果表给出文件名、路径、扩展名、大小和修改时间五列,点列头即可排序,速度快到几乎无感。界面提供两种风格:标题栏里直接放搜索框的简洁版,和带传统菜单栏的版本,随时可切换。
👥 它如何帮到具体的人
- 开发者在几十个仓库里翻测试文件:正则
.*\.test\.js$加上通配符,几秒内锁定全部目标,再按修改时间排序,最近动过的排最前。 - 设计师整理素材库:只看扩展名
png,按修改时间倒序,上一小时的工作文件就在第一屏;路径过滤把范围限定在某个项目文件夹,系统文件一律不出现。 - 运维排查配置:路径前缀把搜索钉在
/etc和/opt,正则匹配带特定标识的配置文件片段,省去了逐层ls的时间。
⚙️ 设计视角:C 语言与模块化架构
选 C 的好处很直接:C 级别的搜索性能,内存占用小,而且不绑定任何桌面环境。代码按职责拆成了独立模块,查询链路尤其清晰:
- src/fsearch_query_lexer.c 与 src/fsearch_query_parser.c:词法分析到语法解析
- src/fsearch_query_tree.c 与 src/fsearch_query_matchers.c:节点树构建与条件匹配
- src/fsearch_thread_pool.c:扫描与索引任务丢给后台线程池,主界面不掉帧
- src/fsearch_database.c:索引的存储与检索
🌱 生态与演进
翻译由 Weblate 平台协作管理,仓库 po/ 目录下能看到中文在内的二十余种语言文件;想补翻译直接去平台提,不必发 Pull Request。开发路线在 TODO.md 里列得很具体:文件系统监控让索引实时跟上变化,自定义属性、创建/访问时间、属主与权限的索引与搜索,以及命令行接口都在计划内。文档维护在 help/ 目录,搜索语法各篇都有示例。
🎯 写在最后
对经常翻文件的人来说,FSearch 的价值在于把「找文件」变成打字速度的事:索引建一次,之后每次搜索都只等你的手指。装上它、选个目录建好索引,下一次翻找就交给它吧。
【免费下载链接】fsearchA fast file search utility for Unix-like systems based on GTK3项目地址: https://gitcode.com/gh_mirrors/fs/fsearch
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考