fselect:用SQL语法查找文件的开源命令行工具

fselect:用SQL语法查找文件的开源命令行工具 文章目录fselect用SQL语法查找文件的开源命令行工具核心设计超出常规文件搜索的能力跨平台安装适用场景和局限fselect用SQL语法查找文件的开源命令行工具在Linux下找文件find命令是标配但它的参数语法对不熟悉的人来说确实不够直观。-name、-type、-exec的组合写一次忘一次是常有的事。GitHub上的 fselect 项目用 Rust 实现了一套文件搜索方案把文件系统查询变成了类似 SQL 的语句。项目目前获得 4,446 Star支持 Linux、Windows、macOS 全平台。核心设计fselect 的语法结构可以概括为一条简化版 SQLfselect 字段[, 字段...] from 目录 where 条件 [group by ...] [order by ...] [limit N]找/tmp下大于 1GB 的文件fselect size, path from /tmp where size gt 1g找今天修改过的所有 jpg 图片fselect path, size from /home/user where name *.jpg and modified today写过 SQL 的人几乎不需要额外学习。size、path、name、modified就是列名from指定搜索根目录where写过滤条件。操作符支持gt、lt、gte、lte、between也可以直接用、、、。字符串匹配支持 glob 通配符和 Rust 正则表达式。超出常规文件搜索的能力fselect 的查询能力覆盖了一些find难以处理的场景。聚合统计。按扩展名统计文件组成fselect ext, count(*) from /tmp group by ext。支持 MIN、MAX、AVG、SUM、COUNT 等函数可以在搜索结果上做统计分析。图片维度查找。按图片宽高过滤fselect path from /home/user/photos where width gte 2000。找出所有正方形图片fselect path from /home/user/photos where width height。音频元数据。按 MP3 的比特率、流派、年份筛选fselect duration, path from /home/user/music where genre Rap and bitrate 320 and mp3_year lt 2000。权限审计。扫描危险权限文件fselect mode, path from /home/user where other_write or other_exec。查找 SUID 程序fselect name from /usr/bin where suid。子查询。支持 SQL 风格的嵌套查询在多个目录间做对比操作语法类似where size in (select size from /backup where ...)。归档内搜索。直接搜索 zip 压缩包内容无需先解压。gitignore 集成。搜索代码目录时自动跳过忽略文件fselect size, path from /home/user/projects gitignore where name *.cpp。输出格式。默认文本表格输出可选 JSON、CSV、HTML 格式便于管道处理。交互模式。运行fselect -i进入交互式界面实时输入查询语句查看结果。跨平台安装Rust 编写的单二进制文件安装覆盖主流平台Linux 可用cargo install fselect编译Arch 有 AUR 包Debian/Ubuntu 有 deb 包NixOS 已收录。也提供 musl 静态编译版本。Windows 支持 winget、Chocolatey、Scoop 三种包管理器以及预编译 zip 包。macOS 通过brew install fselect或 MacPorts 安装。适用场景和局限日常需要写复杂find命令的场景fselect 的 SQL 风格让逻辑更清晰。多目录文件对比、文件统计报告生成、按元数据筛选图片或音频这些任务用 fselect 比传统工具更顺手。fselect 不试图完全替代find。find的-exec能力对搜索结果执行操作在 fselect 中不存在。它的定位是查询展示不是查找并操作。两者可以互补使用。把文件系统当作数据库来查询这个设计思路对熟悉 SQL 的开发者来说很自然也确实填补了传统命令行工具在查询表达力上的空白。互补使用。把文件系统当作数据库来查询这个设计思路对熟悉 SQL 的开发者来说很自然也确实填补了传统命令行工具在查询表达力上的空白。