| Crates.io | rfgrep |
| lib.rs | rfgrep |
| version | 0.4.0 |
| created_at | 2025-05-23 21:18:35.213576+00 |
| updated_at | 2025-10-15 17:25:29.850056+00 |
| description | Advanced recursive file grep utility with comprehensive file type classification - search, list, and analyze 153+ file formats with intelligent filtering and safety policies |
| homepage | https://github.com/kh3rld/rfgrep |
| repository | https://github.com/kh3rld/rfgrep |
| max_upload_size | |
| id | 1686738 |
| size | 1,067,624 |
A command-line utility for recursively searching and listing files with advanced filtering capabilities. Built in Rust.
Advanced Search
File Listing
Utilities
Unix Pipeline Integration
-c)-l)Output Formats (v0.4.0)
Assuming you have Rust installed, run:
cargo install rfgrep
cargo install --git https://github.com/kh3rld/rfgrep.git
git clone https://github.com/kh3rld/rfgrep.git
cargo build --release
After installing rfgrep, you can install the comprehensive man pages:
cd man
sudo make install
cd man
make install-user
Then add to your shell profile (.bashrc, .zshrc, etc.):
export MANPATH=$MANPATH:$HOME/.local/share/man
rfgrep supports tab completion for all major shells:
# Generate and source completion
rfgrep completions bash >> ~/.bashrc
source ~/.bashrc
# Generate completion file
rfgrep completions zsh > ~/.zsh/completions/_rfgrep
# Add to .zshrc
echo 'fpath=(~/.zsh/completions $fpath)' >> ~/.zshrc
autoload -U compinit && compinit
# Generate and install
rfgrep completions fish --install --user
# Generate and import
rfgrep completions powershell > rfgrep-completion.ps1
. rfgrep-completion.ps1
rfgrep search "pattern"
rfgrep search "pattern" \
--mode regex \
--extensions rs,toml \
--max-size 5 \
--skip-binary \
--copy
# Simple list
rfgrep list
# Detailed view
rfgrep list --long --recursive
# With filters
rfgrep list --extensions rs,toml --max-size 10 --show-hidden
See DESIGN_OPTIMIZATION.md for the latest simulation findings and the optimized framework proposal, including cross-disciplinary applications and roadmap.
Quickly run built-in simulations and write a CSV report to ./results/simulations.csv:
rfgrep simulate
You can change the working directory with --path to select a corpus (defaults to . and prefers ./bench_data if present).
After installation, comprehensive man pages are available:
# Main man page
man rfgrep
# Command-specific man pages
man rfgrep-search
man rfgrep-interactive
man rfgrep-list
man rfgrep-completions
The man pages include:
Once installed, tab completion provides:
rfgrep <TAB>)rfgrep search --<TAB>)--extensions <TAB>)src/<TAB>)# Check if man pages are installed
ls ~/.local/share/man/man1/rfgrep*
# Add to shell profile if needed
echo 'export MANPATH=$MANPATH:$HOME/.local/share/man' >> ~/.bashrc
# Regenerate completions
rfgrep completions bash > ~/.bash_completion.d/rfgrep
# Reload shell configuration
source ~/.bashrc
# For zsh, ensure completion directory exists
mkdir -p ~/.zsh/completions
rfgrep completions zsh > ~/.zsh/completions/_rfgrep
# For fish, install to user directory
rfgrep completions fish --install --user
# Use dry-run to preview
rfgrep search "pattern" --dry-run
# Skip binary files
rfgrep search "pattern" --skip-binary
# Limit file size
rfgrep search "pattern" --max-size 10
# Use specific extensions
rfgrep search "pattern" --extensions rs,py,js
Bash:
# Check if completion is loaded
complete -p | grep rfgrep
# Manual installation
rfgrep completions bash >> ~/.bashrc
source ~/.bashrc
Zsh:
# Check completion directory
ls ~/.zsh/completions/_rfgrep
# Reload completions
autoload -U compinit && compinit
Fish:
# Check if completion is installed
ls ~/.config/fish/completions/rfgrep.fish
# Manual installation
rfgrep completions fish > ~/.config/fish/completions/rfgrep.fish
| Option | Description |
|---|---|
--log PATH |
Write logs to specified file |
--path DIR |
Base directory (default: .) |
| Option | Description |
|---|---|
--mode MODE |
Search mode: regex/text/word |
--extensions EXT |
Comma-separated file extensions |
--max-size MB |
Skip files larger than specified MB |
--skip-binary |
Skip binary files |
--dry-run |
Preview files without processing |
--copy |
Copy results to clipboard |
--quiet, -q |
Suppress non-essential output (v0.4.0) |
--count, -c |
Show only count of matches (v0.4.0) |
--files-with-matches, -l |
Show only filenames with matches (v0.4.0) |
--output-format |
Output format: text/json/csv/tsv/xml/html/markdown |
--ndjson |
Output newline-delimited JSON (v0.4.0) |
--safety-policy |
Safety policy: default/conservative/performance |
--threads N |
Number of threads for parallel processing |
--file-types |
File type strategy: default/comprehensive/conservative/performance |
--include-extensions |
Override to include specific file types |
--exclude-extensions |
Override to exclude specific file types |
--search-all-files |
Search all file types (comprehensive mode) |
--text-only |
Only search text files (conservative mode) |
| Option | Description |
|---|---|
--extensions EXT |
Comma-separated file extensions |
--long |
Detailed output format |
--recursive |
Recursive directory traversal |
--show-hidden |
Include hidden files/directories |
--max-size MB |
Skip files larger than specified MB |
--skip-binary |
Skip binary files |
rfgrep search "HashMap" --extensions rs
rfgrep list --extensions md --max-size 1
rfgrep search "fn\s+\w+\s*\(" --mode regex --copy
grep -c):rfgrep search "error" --extensions log -c
# Output: 42
grep -l):rfgrep search "TODO" --extensions rs -l
# Output: List of files containing TODO
rfgrep search "HashMap" --extensions rs --output-format csv > results.csv
# Count matches per file
rfgrep search "error" --output-format csv | awk -F',' 'NR>1 {print $1}' | sort | uniq -c
# Process files with xargs
rfgrep list --extensions rs | xargs wc -l
# Filter with grep
rfgrep search "function" | grep "async"
rfgrep search "pattern" --file-types comprehensive --include-extensions pdf,docx
rfgrep search "pattern" --text-only --safety-policy conservative
rfgrep search "pattern" --threads 4 --safety-policy performance
rfgrep simulate
--skip-binary to avoid unnecessary file checks--extensions and --max-size--dry-run first to preview--safety-policy performance for faster processing--threads based on your CPU cores--file-types conservative for safe text-only search# Start interactive search
rfgrep interactive "pattern"
# Interactive search with specific algorithm
rfgrep interactive "pattern" --algorithm boyer-moore
# Interactive search in specific file types
rfgrep interactive "pattern" --extensions rs,py
# JSON output for programmatic processing
rfgrep search "pattern" --output-format json
# NDJSON (newline-delimited JSON) for streaming
rfgrep search "pattern" --ndjson
# CSV output for spreadsheet analysis (v0.4.0)
rfgrep search "pattern" --output-format csv
# TSV output for tab-separated data (v0.4.0)
rfgrep search "pattern" --output-format tsv
# XML output for structured data
rfgrep search "pattern" --output-format xml
# HTML output for web display
rfgrep search "pattern" --output-format html
# Markdown output for documentation
rfgrep search "pattern" --output-format markdown
# Boyer-Moore (fast for plain text)
rfgrep search "pattern" --algorithm boyer-moore
# Regular expression
rfgrep search "pattern" --algorithm regex
# Simple linear search
rfgrep search "pattern" --algorithm simple
# Verify man pages are accessible
man rfgrep
man rfgrep-search
man rfgrep-interactive
man rfgrep-list
man rfgrep-completions
# Bash: Type 'rfgrep ' and press TAB
rfgrep <TAB>
# Zsh: Type 'rfgrep ' and press TAB
rfgrep <TAB>
# Fish: Type 'rfgrep ' and press TAB
rfgrep <TAB>
# Test search functionality
rfgrep search "test" --extensions rs
# Test list functionality
rfgrep list --extensions rs
# Test interactive mode
rfgrep interactive "test" --extensions rs
Note: the --copy option attempts to use the system clipboard and may fail in headless CI environments (X11/Wayland not available). In those environments run without --copy or provide a virtual display (Xvfb) or configure your CI to provide a clipboard service. The application will log a warning if the clipboard operation times out.
# Test shell completions
./test_completions.sh
# Test man pages
./test_man_pages.sh
Contributions are welcome! Please open an issue or PR for any: