fselect
fselect is a command-line file search tool written in Rust that lets you query your filesystem using SQL-like syntax instead of traditional find commands. It supports complex features like image metadata search, audio tag queries, archive inspection, and hash-based lookups.
Key facts
Objective fields from the source. Values we can't verify are shown as “Unknown” rather than guessed.
| Field | Value |
|---|---|
| Repository | jhspetersson/fselect |
| Owner | jhspetersson |
| Primary language | Rust |
| License | Apache-2.0 — OSI-approved |
| Stars | 4.5k |
| Forks | 87 |
| Open issues | 6 |
| Latest release | 0.10.2 (2026-06-28) |
| Last updated | 2026-07-06 |
| Source | https://github.com/jhspetersson/fselect |
What fselect is
A Rust-based CLI utility that parses relaxed SQL-like grammar to generate filesystem traversal queries, supporting subqueries, aggregate functions, multiple output formats (CSV, JSON), and optional integration with plocate/Everything indexes for indexed search.
Get the fselect source
Clone the repository and explore it locally.
git clone https://github.com/jhspetersson/fselect.gitcd fselect# follow the project's README for install & configurationNeed it deployed, integrated, or customized instead? DEV.co ships production installs.
Best use cases
Implementation considerations
- Verify Rust toolchain and build environment are available, or use pre-built binaries (deb, rpm, macOS, Windows installers provided).
- For index-backed search, plan separate installation/configuration of plocate (Linux) or Everything (Windows); fselect feature flags must be enabled at compile time.
- Test query syntax and performance on representative directory structures before rolling out to production automation pipelines.
- Sanitize user-supplied query parameters if integrating into scripts to avoid injection or malformed SQL-like expressions.
- Metadata search features (EXIF, audio tags, hashes) add runtime overhead; benchmark on typical workload before high-frequency scheduled use.
When to avoid it — and what to weigh
- Real-time filesystem monitoring needed — fselect performs point-in-time queries; it does not watch for filesystem changes or trigger on events.
- Team unfamiliar with SQL-like syntax — If your ops/dev team works exclusively with POSIX find and sed, onboarding cost may outweigh benefits unless queries become complex enough to justify learning curve.
- Performance-critical, huge filesystem scans — Full filesystem traversal without an index (plocate/Everything) can be slow on large/slow storage; index support requires separate tool installation.
- Windows-only critical deployments without Everything — Indexed search on Windows requires voidtools Everything; unindexed scans may not meet performance SLAs on large Windows volumes.
License & commercial use
Apache License 2.0 (Apache-2.0) is a permissive OSI license granting broad use, modification, and distribution rights, with patent protection and explicit liability disclaimers.
Apache-2.0 permits commercial use, redistribution, and modification, provided that a copy of the license and any CHANGES file are included in distributions. No commercial support or warranty is implied by the license; verify with maintainer if SLA expectations exist.
DEV.co evaluation signals
Editorial assessment — not user reviews. Directional, with an explicit confidence level.
| Signal | Assessment |
|---|---|
| Maintenance | Active |
| Documentation | Adequate |
| License clarity | Clear |
| Deployment complexity | Low |
| DEV.co fit | Good |
| Assessment confidence | High |
fselect operates with the privileges of the user invoking it; filesystem ACLs, POSIX capabilities, and extended attributes are queryable, but the tool itself does not alter permissions or ownership. No remote network capabilities reported. Input validation of query syntax is standard Rust parser best practices; user-supplied file patterns should be validated to avoid unintended scope expansion. Archive inspection (zip) may pose risk if untrusted archives are processed.
Alternatives to consider
GNU find + xargs/pipes
POSIX-standard, no dependencies, but requires shell expertise for complex predicates; less readable and maintainable for multi-criteria queries.
fd (Rust alternative)
Simpler syntax, faster than find, but lacks SQL-like composability, metadata search, and archive support; better for basic name/pattern matching.
Lucene/Elasticsearch indexing
Heavyweight for filesystem search; overkill unless rich full-text indexing and distributed query are required.
Build on fselect with DEV.co software developers
Evaluate fselect for your infrastructure or development automation. Download pre-built binaries, review the docs, and test queries on a sample directory structure to confirm fit.
Talk to DEV.coRelated on DEV.co
Explore the category and the services that help you build with it.
fselect FAQ
Does fselect replace find?
Can I use fselect in cron jobs or CI/CD?
Is indexed search (plocate/Everything) required?
What platforms are supported?
Work with a software development agency
Adopting fselect is usually one piece of a larger software development effort. As a software development agency, DEV.co provides software development services and web development expertise — pairing senior software developers and web developers with your team to design, build, and operate open-source databases software in production.
Ready to streamline your file discovery workflow?
Evaluate fselect for your infrastructure or development automation. Download pre-built binaries, review the docs, and test queries on a sample directory structure to confirm fit.