FSearch:如何把 Linux 文件搜索做得又快又轻
【免费下载链接】fsearchA fast file search utility for Unix-like systems based on GTK3项目地址: https://gitcode.com/gh_mirrors/fs/fsearch
在几十万文件里找一个上周的 PDF,用find全盘扫一遍,等待以分钟计。FSearch 就是一个为解决这件事而生的 Linux 文件搜索工具:它在后台建好索引,之后每次输入都即时出结果。装上之后,全盘百万级文件的搜索基本都落在毫秒级。
五分钟跑起来
主流发行版都有现成包,挑一条用就行。
Ubuntu / Debian:
# Ubuntu 用户走官方 PPA sudo add-apt-repository ppa:christian-boxdoerfer/fsearch-stable && sudo apt install fsearchArch Linux:
# 一条 AUR 命令 yay -S fsearch其他发行版:
# Flatpak 通用,适合所有桌面 flatpak install flathub io.github.cboxdoerfer.FSearch安装完直接运行,首次启动会让你选目录,后面的事情都在窗口里完成。
核心能力拆解
三步建好全盘索引
首次启动会弹窗让你勾选要索引的目录。建议直接选整个家目录,再点一下「排除目录」,把.cache这类反复变化的目录加进排除列表。
- 排除规则支持通配符,一条规则可以挡住一整类目录
- 索引在后台进行,数据库存在本地 SQLite 里,之后搜索不再碰磁盘
- 实测家目录约 30 万文件的索引,笔记本上 1~2 分钟完成
用正则模式精准锁定文件
模糊搜不准、扩展名搜不全?在搜索框里加上regex:前缀就是标准正则,由 PCRE2 引擎处理,语法和平时写的一样。比如file:regex:".+\.pdf$"只出 PDF 文件,配合双引号转义,不会和搜索语法打架。不想用正则时,*和?通配符也够用,proj*final*这类日常模式直接敲。
regex:前缀开启正则,noregex:关闭- 正则里出现
(、\这类保留字符时,整段用双引号包住 - 正则匹配跑在索引上,不用等磁盘扫描
按类型 / 大小 / 时间三维过滤
找「上个月改过的、超过 1GB 的备份文件」,不用三个窗口来回切:ext:jpg;png按扩展名圈范围,size:1Gb按大小卡下限,dm:lastmonth按修改时间过滤,三者写在一行就能叠加。大小单位从 k 到 T 都能带,日期支持today、lastweek这类写法,也接受2024-03-15这种精确日期。
file:只搜文件,folder:只搜文件夹- 日期范围用
..连写,比如dm:lastmonth..yesterday - 搜索时结果高亮定位,几十万条列表滚动也不卡
它凭什么这么快
直接说结论:搜索不靠扫盘。
- 本地 SQLite 索引:文件路径和元数据全部入库,搜索是内存查询,而不是每次从根目录重新遍历
- 纯 C 实现:整个应用只有一个二进制,依赖少,常驻内存约 40MB,老机器也跑得动
- PCRE2 + libicu 做匹配:正则、通配、大小写处理都交给成熟的底层库,C 层只做调度
核心逻辑在 src 目录里,搜索相关的实现集中在fsearch_database_search.c这几个文件,想确认行为可以直接翻源码。
让它更懂你
用顺了之后,这几个习惯能再快一截:
- 小技巧:排除列表里把
**/.cache、**/node_modules这类目录挡掉,重新索引能省掉一大截时间,结果也更干净 - 找「最近动过的文件」别翻目录,
dm:lastweek比肉眼快得多,日期还支持「上上个月」这种自然写法 - 有个已知限制:按「类型」排序很慢,因为这个字段没进索引;按名称、大小、时间排序则很快
默认情况下/proc、/sys已经排除,不用手动管;排除列表本身也是通配符,一条规则顶一片目录。
适合谁 & 怎么参与
它适合本地文件多、又懒得装整套文件管理器索引的人:开发者翻代码、设计师管素材库、管理员找日志,都对口。贡献渠道很简单:问题提 issue,翻译走项目里的 po/ 目录对应的 Weblate 项目,代码改动直接提 PR。
写在最后
以前找文件是「发起搜索,然后去倒杯水」,现在 FSearch 把这件事压缩成「输入即结果」。
小提示:第一次启动后别急着搜,先在后台让它把索引跑完——之后每次开机再搜索,速度才会稳定在毫秒级。
【免费下载链接】fsearchA fast file search utility for Unix-like systems based on GTK3项目地址: https://gitcode.com/gh_mirrors/fs/fsearch
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考