- name
- fd-find
- description
- A fast and user-friendly alternative to 'find' - simple syntax, smart defaults, respects gitignore.
- homepage
- https://github.com/sharkdp/fd
- metadata
- {"clawdbot":{"emoji":"📂","requires":{"bins":["fd"]},"install":[{"id":"brew","kind":"brew","formula":"fd","bins":["fd"],"label":"Install fd (brew)"},{"id":"apt","kind":"apt","package":"fd-find","bins":["fd"],"label":"Install fd (apt)"}]}}
fd - Fast File Finder
User-friendly alternative to find with smart defaults.
Quick Start
Basic search
# Find files by name
fd pattern
# Find in specific directory
fd pattern /path/to/dir
# Case-insensitive
fd -i patternCommon patterns
# Find all Python files
fd -e py
# Find multiple extensions
fd -e py -e js -e ts
# Find directories only
fd -t d pattern
# Find files only
fd -t f pattern
# Find symlinks
fd -t lAdvanced Usage
Filtering
# Exclude patterns
fd pattern -E "node_modules" -E "*.min.js"
# Include hidden files
fd -H pattern
# Include ignored files (.gitignore)
fd -I pattern
# Search all (hidden + ignored)
fd -H -I pattern
# Maximum depth
fd pattern -d 3Execution
# Execute command on results
fd -e jpg -x convert {} {.}.png
# Parallel execution
fd -e md -x wc -l
# Use with xargs
fd -e log -0 | xargs -0 rmRegex patterns
# Full regex search
fd '^test.*\.js$'
# Match full path
fd --full-path 'src/.*/test'
# Glob pattern
fd -g "*.{js,ts}"Time-based filtering
# Modified within last day
fd --changed-within 1d
# Modified before specific date
fd --changed-before 2024-01-01
# Created recently
fd --changed-within 1hSize filtering
# Files larger than 10MB
fd --size +10m
# Files smaller than 1KB
fd --size -1k
# Specific size range
fd --size +100k --size -10mOutput formatting
# Absolute paths
fd --absolute-path
# List format (like ls -l)
fd --list-details
# Null separator (for xargs)
fd -0 pattern
# Color always/never/auto
fd --color always patternCommon Use Cases
Find and delete old files:
fd --changed-before 30d -t f -x rm {}Find large files:
fd --size +100m --list-detailsCopy all PDFs to directory:
fd -e pdf -x cp {} /target/dir/Count lines in all Python files:
fd -e py -x wc -l | awk '{sum+=$1} END {print sum}'Find broken symlinks:
fd -t l -x test -e {} \; -printSearch in specific time window:
fd --changed-within 2d --changed-before 1dIntegration with other tools
With ripgrep:
fd -e js | xargs rg "pattern"With fzf (fuzzy finder):
vim $(fd -t f | fzf)With bat (cat alternative):
fd -e md | xargs batPerformance Tips
fdis typically much faster thanfind- Respects
.gitignoreby default (disable with-I) - Uses parallel traversal automatically
- Smart case: lowercase = case-insensitive, any uppercase = case-sensitive
Tips
- Use
-tfor type filtering (f=file, d=directory, l=symlink, x=executable) -efor extension is simpler than-g "*.ext"{}in-xcommands represents the found path{.}strips the extension{/}gets basename,{//}gets directory
Documentation
GitHub: https://github.com/sharkdp/fd Man page: man fd