Loading...
Loading...
Fast file finding using fd command-line tool with smart defaults, gitignore awareness, and parallel execution. Use when searching for files by name, extension, or pattern across directories.
npx skill4agent add laurigates/claude-plugins fd-file-findingfdfind.gitignorefind# Find all files named config
fd config
# Find files with extension
fd -e rs # All Rust files
fd -e md # All Markdown files
fd -e js -e ts # JavaScript and TypeScript
# Case-sensitive search
fd -s Config # Only exact case match# Regex patterns
fd '^test_.*\.py$' # Python test files
fd '\.config$' # Files ending in .config
fd '^[A-Z]' # Files starting with uppercase
# Glob patterns
fd '*.lua' # All Lua files
fd 'test-*.js' # test-*.js files# Search only files
fd -t f pattern # Files only
fd -t d pattern # Directories only
fd -t l pattern # Symlinks only
fd -t x pattern # Executable files
# Multiple types
fd -t f -t l pattern # Files and symlinks# Limit search depth
fd -d 1 pattern # Only current directory
fd -d 3 pattern # Max 3 levels deep
fd --max-depth 2 pattern # Alternative syntax
# Minimum depth
fd --min-depth 2 pattern # Skip current directory# Include hidden files
fd -H pattern # Include hidden files (starting with .)
# Include ignored files
fd -I pattern # Include .gitignore'd files
fd -u pattern # Unrestricted: hidden + ignored
# Show all files
fd -H -I pattern # Show everything# File size filters
fd --size +10m # Files larger than 10 MB
fd --size -1k # Files smaller than 1 KB
fd --size +100k --size -10m # Between 100 KB and 10 MB# Files modified recently
fd --changed-within 1d # Last 24 hours
fd --changed-within 2w # Last 2 weeks
fd --changed-within 3m # Last 3 months
# Files modified before
fd --changed-before 1y # Older than 1 year# Execute command for each result
fd -e jpg -x convert {} {.}.png # Convert all JPG to PNG
# Parallel execution
fd -e rs -x rustfmt # Format all Rust files
# Execute with multiple results
fd -e md -X wc -l # Word count on all Markdown files# Custom output format using placeholders
fd -e tf --format '{//}' # Parent directory of each file
fd -e rs --format '{/}' # Filename without directory
fd -e md --format '{.}' # Path without extension
# Placeholders:
# {} - Full path (default)
# {/} - Basename (filename only)
# {//} - Parent directory
# {.} - Path without extension
# {/.} - Basename without extension# Prefer fd's native execution over xargs when possible:
fd -e log -x rm # Delete all log files (native)
fd -e rs -X wc -l # Count lines in Rust files (batch)
# Use with rg for powerful search
fd -e py -x rg "import numpy" {} # Find numpy imports in Python files
# Open files in editor
fd -e md -X nvim # Open all Markdown in Neovim (batch)
# When xargs IS useful: complex pipelines or non-fd inputs
cat filelist.txt | xargs rg "TODO" # Process file from external list# Find test files
fd -e test.js -e spec.js # JavaScript tests
fd '^test_.*\.py$' # Python tests
fd '_test\.go$' # Go tests
# Find configuration files
fd -g '*.config.js' # Config files
fd -g '.env*' # Environment files
fd -g '*rc' -H # RC files (include hidden)
# Find source files
fd -e rs -e toml -t f # Rust project files
fd -e py --exclude __pycache__ # Python excluding cache
fd -e ts -e tsx src/ # TypeScript in src/# Find and remove
fd -e pyc -x rm # Remove Python bytecode
fd node_modules -t d -x rm -rf # Remove node_modules
fd -g '*.log' --changed-before 30d -X rm # Remove old logs
# Find large files
fd --size +100m -t f # Files over 100 MB
fd --size +1g -t f -x du -h # Size of files over 1 GB# Search in specific directories
fd pattern src/ # Only in src/
fd pattern src/ tests/ # Multiple directories
# Exclude paths
fd -e rs -E target/ # Exclude target directory
fd -e js -E node_modules -E dist # Exclude multiple paths
# Full path matching
fd -p src/components/.*\.tsx$ # Match full path# Find all directories with Terraform configs
fd -t f 'main\.tf$' --format '{//}'
# Find all directories with package.json
fd -t f '^package\.json$' --format '{//}'
# Find Go module directories
fd -t f '^go\.mod$' --format '{//}'
# Find Python project roots (with pyproject.toml)
fd -t f '^pyproject\.toml$' --format '{//}'
# Find Cargo.toml directories (Rust projects)
fd -t f '^Cargo\.toml$' --format '{//}'--format '{//}'-j 1--max-depth-t f# Prefer native execution over xargs
fd -e py -x rg "class.*Test" {} # Find test classes in Python
fd -e rs -x rg "TODO" {} # Find TODOs in Rust files
fd -e md -x rg "# " {} # Find headers in Markdown# fd can execute directly — no need for xargs
fd -t f 'main\.tf$' --format '{//}' # Find dirs containing main.tf
fd -e log -x rm # Delete all .log files| Option | Purpose | Example |
|---|---|---|
| Filter by extension | |
| Filter by type (f/d/l/x) | |
| Max search depth | |
| Include hidden files | |
| Include ignored files | |
| Unrestricted (no ignore) | |
| Exclude path | |
| Execute command | |
| Batch execute | |
| Case-sensitive | |
| Glob pattern | |
| Custom output format | |
smhdwybkmgt# Find recently modified source files
fd -e rs --changed-within 1d
# Find large files in current directory
fd -d 1 -t f --size +10m
# Find executable scripts
fd -t x -e sh
# Find config files including hidden
fd -H -g '*config*'
# Find and count lines
fd -e py -X wc -l
# Find files excluding build artifacts
fd -e js -E dist -E node_modules -E build
# Find all Terraform/IaC project directories
fd -t f 'main\.tf$' --format '{//}'
# Find all Node.js project roots
fd -t f '^package\.json$' --format '{//}'