What is Fd?
fd is a fast, user-friendly alternative to find. Written in Rust by David Peter, it is designed for the day-to-day work of developers navigating modern project trees.
Mental model: Think of fd as find . -name "*pattern*" with sensible defaults already applied — hidden directories skipped, .gitignore respected, output colorized, searches parallelized.
Side-by-Side Comparison
The single most common use of find in development:
# find way — 7 tokens, requires quoting, searches node_modules
find . -type f -name "*config*"
# fd way — 2 tokens, smart defaults, skips node_modules automatically
fd config
What fd Does by Default That find Doesn't
| Behaviour | find | fd |
|---|---|---|
Respects .gitignore | No | Yes |
| Skips hidden files | No | Yes |
| Parallel traversal | No | Yes |
| Regex pattern (default) | No (glob) | Yes |
| Smart case sensitivity | No | Yes |
| Colorized output | No | Yes |
When to Use fd vs. find
Use fd when:
- You are a developer navigating a Git repository
- You want to list, move, or act on source code files
- You want to exclude
.git,node_modules,__pycache__automatically
Use find when:
- You are writing a shell script deployed to servers
- You need metadata filters:
-perm,-user,-nouser, SUID bits - You need POSIX portability (Alpine containers, minimal Docker images)
- You are doing system audits on files
fdwould ignore by default
Quick Start
# Install
sudo apt install fd-find # Ubuntu/Debian (binary: fdfind, see troubleshooting)
brew install fd # macOS
cargo install fd-find # via Rust toolchain
# Basic usage
fd config # find files matching "config"
fd -t f -e py # all .py files
fd -H .env # find hidden .env files
fd -u "build.gradle" # search inside ignored directories too