detect
A fast, powerful tool for finding files by name, content, and metadata using an expressive query language. Drop-in replacement for complex find
/grep
pipelines.
➜ detect 'path.extension == rs && contents ~= async'
./src/main.rs
./src/lib.rs
./src/eval/fs.rs
➜ detect 'size > 50kb && modified > -7d && contents contains TODO'
./docs/planning.md
./src/experimental.rs
Quick Start
# Find files by name pattern (name without extension)
# Find files by exact filename
# Search file contents
# Complex queries with boolean logic
Why detect?
Traditional Unix tools require chaining multiple commands with complex syntax:
# Old way: find TypeScript files >5KB modified in last week containing TODO
# New way: same query, readable syntax
Key Features
- Unified search - content AND metadata in single query
- Natural syntax - readable boolean expressions instead of cryptic flags
- Regex support - powerful pattern matching across all text fields
- Fast execution - optimized query planning (metadata filters before content scanning)
- Time queries - intuitive relative/absolute date filtering
- Type safety - prevents nonsensical queries at parse time
Practical Examples
# Security audit: find config files with secrets
# Code quality: large files without tests or docs
# Angular components with specific decorators
# Recent changes to build files
# Complex boolean logic with grouping
Full syntax reference and advanced features: detect --help
Performance
detect optimizes query execution automatically:
- Applies fast metadata filters first (name, size, dates)
- Only scans file contents for files passing metadata filters
- Uses streaming regex engines for large file content matching
- Respects
.gitignore
by default (override with-i
)