quickfind
Search files instantly: configurable, interactive, Rust-powered.
Remember part of a filename? Find it instantly in milliseconds, open it in your default app or jump straight into vim.
Install Quickly
Seamless onboarding (works with cargo install quickfind)
After install, just run:
If this is your first run (no config yet), quickfind automatically starts setup wizard:
- asks your index locations,
- builds initial index,
- optionally enables Linux user daemon.
You can also run setup manually at any time:
Quick Start (recommended)
1) Pick your locations interactively
This onboarding command asks for directories to index and writes ~/.quickfind/conf.toml.
1-b) Or run full setup in one command
This runs onboarding + indexing + optional daemon install in one flow.
2) Build the index once
3) Enable always-on watcher daemon (Linux, user service)
Create this file:
~/.config/systemd/user/quickfind-watcher.service
[Unit]
Description=quickfind watcher daemon
After=default.target
[Service]
Type=simple
ExecStart=/home/YOUR_USER/.cargo/bin/quickfind --watch
Restart=on-failure
RestartSec=2
Nice=19
IOSchedulingClass=idle
[Install]
WantedBy=default.target
Then enable it:
4) Search instantly any time
# OR interactive mode
Manual watcher mode (foreground)
Polling fallback (when native fs events are unreliable)
# tune poll interval (ms)
Daemon logs
Disable daemon
Since I started using Linux, I always felt one essential tool was missing: a fast, reliable file finder like Everything Search on Windows.
So I built quickfind in Rust. Its configurable indexing and interactive TUI make finding files fast, reliable, and effortless.
- Configurable: Customize search locations, ignored paths, and search depth via a simple config file.
- Interactive Onboarding:
quickfind --initasks for locations and writes config for you. - Efficient Indexing: Traverses directories once and stores paths in a local database for lightning-fast searching.
- Background Sync:
--watchmode keeps the index updated in near real-time as files change. - Polling Fallback:
--watch-pollprovides cross-filesystem resilience when native notifications are unreliable. - Bounded Memory Watcher: Pending watcher memory is capped (
watch_pending_ram_cap_mb, default200). - Spill-to-Disk Backpressure: Overflow snapshots are persisted to disk and replayed safely.
- Graceful Degradation: If both RAM and spool are pressured, watcher falls back to coarse scoped reindex markers (correctness first).
- Crash-Safe Recovery: Pending spool segments are replayed on watcher startup.
- Interactive Interface: Browse results with a minimal TUI, open files in default apps or
vim.
- Build the project:
- Run the application:
# OR
Config file: ~/.quickfind/conf.toml
= [
"/path/to/your/directory",
"/another/path/to/search"
]
= [
"**/node_modules/**",
"**/.git/**",
]
= 10
= "vim" # "vi" or "code" or "subl" or any editor of your choice
= "lightblue"
= 200
include: Absolute paths to directories you want to index.ignore: Glob patterns for paths to exclude.depth: Maximum directory depth to traverse.editor: Preferred editor for opening selected files from TUI.highlight_color: Optional result highlight color in TUI.watch_pending_ram_cap_mb: Watcher in-memory pending buffer cap (MB). Default is200if omitted.
Tab: Switch between search input and resultsArrow Keys: Navigate resultsEnter: Open selected file/directory with default appv: Open selected file with vimd: Open containing directoryEsc: Exit interactive mode
main.rs: CLI parsing and orchestrationconfig.rs: Loads/saves config and powers interactive onboarding (quickfind --init)db.rs: Handles persistent file indexing storageindexing.rs: Traverses directories and populates the databasewatcher.rs: Filesystem watcher loop with debounce, batching, adaptive prune, bounded pending queue, spill-to-disk segments, replay/quarantine, and overflow fallbacktui.rs: Interactive Text User Interface
- Fuzzy Search Mode: typo-tolerant and ranking-aware matching
- Usage-Aware Ranking: prioritize frequently opened files
Open issues, submit PRs, or suggest features.
MIT License