fselect is a command-line tool that finds files using SQL-like query syntax instead of traditional find commands.
The tool addresses the limitations of conventional file search utilities by translating SQL-like queries into filesystem operations. Rather than memorizing complex flag combinations for find or ls, users write relaxed SQL grammar that reads naturally. The approach supports subqueries to compare results across directories, aggregate functions, and statistical operations. Beyond basic file matching, fselect can search within archives, respect ignore files like .gitignore and .dockerignore, and query specialized file metadata including image dimensions and EXIF data, audio tags across multiple formats, extended file attributes, POSIX ACLs, and file hashes. It also supports MIME type filtering and shortcuts for common file categories.
Developers should choose this tool if they frequently construct complex file searches or need to query file metadata that standard utilities expose poorly. It suits projects where filesystem queries are part of automation or analysis workflows, particularly when those queries involve multiple conditions or metadata inspection. The tool includes an interactive mode for exploratory searches and can leverage system indexes through plocate on Linux or Everything on Windows for dramatically faster results on large filesystems. Output can be formatted as CSV, JSON, or other formats for integration with downstream tools.
The project maintains active development with regular feature additions and bug fixes. The tool is distributed across multiple package managers and platforms, with precompiled binaries available for Linux, Windows, and macOS, plus installation support through Debian, Fedora, Arch, NixOS, Chocolatey, Scoop, and winget. The codebase is written in Rust and can be built from source with optional feature flags for index-backed search support.