A blazingly fast file finder with live preview, syntax highlighting, and fuzzy search. Built in modern C++17.
- 🚀 Fast - Multi-threaded directory scanning, 2-5x faster than
find - 🔍 Multiple search modes - Glob patterns, regex, and fuzzy matching
- 👁️ Live preview - Syntax-highlighted file preview in split view
- ⌨️ Vim-style navigation - j/k, g/G, Ctrl+d/u
- 🎨 Syntax highlighting - C/C++, Python, JavaScript, TypeScript, Rust, Go, and more
- 📋 Clipboard integration - Copy file paths with a single keystroke
- 🎯 Smart filtering - Filter by extensions, ignore common directories
Linux/macOS:
curl -fsSL https://raw.githubusercontent.com/0xXrer/ff/refs/heads/master/install.sh | bashWindows (PowerShell as Administrator):
irm https://raw.githubusercontent.com/0xXrer/ff/refs/heads/master/install.ps1 | iexDownload the latest release for your platform from Releases:
| Platform | Architecture | Download |
|---|---|---|
| Linux | x86_64 | ff-linux-x86_64.tar.gz |
| macOS | Intel | ff-macos-x86_64.tar.gz |
| macOS | Apple Silicon | ff-macos-arm64.tar.gz |
| Windows | x86_64 | ff-windows-x86_64.zip |
Prerequisites: CMake 3.15+, C++17 compiler (GCC 8+, Clang 7+, MSVC 2019+)
git clone https://github.com/0xXrer/ff.git
cd ff
mkdir build && cd build
cmake -DCMAKE_BUILD_TYPE=Release ..
cmake --build . --config Release
# Install (Linux/macOS)
sudo cmake --install .
# Or copy manually
sudo cp ff /usr/local/bin/ # Linux/macOS
copy Release\ff.exe C:\Windows\ # Windows (Admin)# Find all C++ files
ff "*.cpp"
# Regex search
ff --regex "test_.*\.h$"
# Fuzzy search
ff "main" --fuzzy
# Search in specific directory
ff "*.rs" --path ./src
# Filter by extensions
ff --ext cpp,hpp,h
# No preview (batch mode, prints paths)
ff "*.py" --no-preview| Option | Description |
|---|---|
-h, --help |
Show help message |
-v, --version |
Show version |
-r, --regex |
Use regex pattern matching |
-f, --fuzzy |
Use fuzzy matching (like fzf) |
-p, --path <DIR> |
Search in specific directory |
-e, --ext <EXT,...> |
Filter by extensions |
-d, --depth <N> |
Maximum recursion depth (default: 10) |
-i, --case-sensitive |
Case-sensitive matching |
-H, --hidden |
Include hidden files |
-n, --no-preview |
Disable preview panel |
| Key | Action |
|---|---|
j / ↓ |
Move down |
k / ↑ |
Move up |
J / K |
Scroll preview down/up |
d / u |
Page down/up |
g / G |
Go to top/bottom |
p |
Toggle preview panel |
y |
Copy path to clipboard |
Enter |
Select file, copy path, exit |
q / Esc |
Quit |
ff "*.cpp" --ext cpp,hpp,h,cff --regex "^test_.*\.py$" --path ./testsff "mncpp" --fuzzy # Matches "main.cpp", "manager.cpp", etc.ff "config" --fuzzy --path ~/projectssrc/
├── main.cpp # CLI entry point
├── scanner.cpp # Multi-threaded directory traversal
├── matcher.cpp # Glob/regex/fuzzy matching
├── previewer.cpp # File content loading
├── highlighter.cpp # Syntax highlighting
├── tui.cpp # Terminal UI (FTXUI)
└── clipboard.cpp # Cross-platform clipboard
Compared to traditional find on a directory with 100,000 files:
| Tool | Time |
|---|---|
find |
2.1s |
fd |
0.8s |
ff |
0.7s |
Benchmarked on NVMe SSD, Linux 6.1, AMD Ryzen 7
Both are fetched automatically by CMake.
MIT License - see LICENSE for details.
Contributions welcome! Please read the contributing guidelines first.
- Fork the repository
- Create your feature branch (
git checkout -b feature/amazing) - Commit changes (
git commit -m 'Add amazing feature') - Push to branch (
git push origin feature/amazing) - Open a Pull Request
- Configuration file support (~/.config/ff/config.toml)
- Custom color schemes
- File type icons (Nerd Fonts)
- Integration with editors (open in $EDITOR)
- Bookmark frequently accessed files
- Search inside file contents (grep mode)