DEV.co
Open-Source Databases · jhspetersson

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.

Source: GitHub — github.com/jhspetersson/fselect
4.5k
GitHub stars
87
Forks
Rust
Primary language
Apache-2.0
License (OSI-approved)

Key facts

Objective fields from the source. Values we can't verify are shown as “Unknown” rather than guessed.

FieldValue
Repositoryjhspetersson/fselect
Ownerjhspetersson
Primary languageRust
LicenseApache-2.0 — OSI-approved
Stars4.5k
Forks87
Open issues6
Latest release0.10.2 (2026-06-28)
Last updated2026-07-06
Sourcehttps://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.

Quickstart

Get the fselect source

Clone the repository and explore it locally.

terminalbash
git clone https://github.com/jhspetersson/fselect.gitcd fselect# follow the project's README for install & configuration

Need it deployed, integrated, or customized instead? DEV.co ships production installs.

Best use cases

Complex multi-criteria file discovery

Find files matching combinations of criteria (size, date ranges, name patterns, metadata) that would require chained find/grep commands or custom scripts.

Media asset management and filtering

Query large photo/video/audio libraries by dimensions, EXIF data, codec, bitrate, or duration without loading files into external tools.

Compliance and cleanup automation

Identify files matching policy criteria (age, size, ownership, permissions, ACLs) across multiple trees for archival, deletion, or reporting workflows.

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.

SignalAssessment
MaintenanceActive
DocumentationAdequate
License clarityClear
Deployment complexityLow
DEV.co fitGood
Assessment confidenceHigh
Security considerations

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.

Software development agency

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.co

Related open-source tools

Surfaced by semantic similarity across the DEV.co open-source index.

Related on DEV.co

Explore the category and the services that help you build with it.

fselect FAQ

Does fselect replace find?
Not entirely. It excels at complex, human-readable queries but is not a drop-in replacement for all find use cases. Simple name searches via find are often faster.
Can I use fselect in cron jobs or CI/CD?
Yes. Batch mode supports non-interactive queries, CSV/JSON output, and scripting via pipes. Test exit codes and error handling in your environment first.
Is indexed search (plocate/Everything) required?
No. Full filesystem traversal works without it but may be slow on large volumes. Index support is optional and requires separate tool installation.
What platforms are supported?
Linux (x86_64, aarch64; glibc and musl), macOS (Intel, Apple Silicon), and Windows (x86_64). Pre-built binaries and package managers (apt, brew, winget, Scoop) are available.

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.