fd-file-finding
Compare original and translation side by side
🇺🇸
Original
English🇨🇳
Translation
Chinesefd File Finding
fd 文件查找工具
Expert knowledge for using as a fast, user-friendly alternative to with smart defaults and powerful filtering.
fdfind以下是使用的专业知识,它是的快速、易用替代方案,具备智能默认配置和强大的过滤能力。
fdfindCore Expertise
核心优势
fd Advantages
- Fast parallel execution (written in Rust)
- Colorized output by default
- Respects automatically
.gitignore - Smart case-insensitive search
- Simpler syntax than
find - Regular expression support
fd的优点
- 快速并行执行(基于Rust编写)
- 默认带彩色输出
- 自动遵守规则
.gitignore - 智能不区分大小写搜索
- 语法比更简单
find - 支持正则表达式
Basic Usage
基础用法
Simple File Search
简单文件搜索
bash
undefinedbash
undefinedFind all files named config
Find all files named config
fd config
fd config
Find files with extension
Find files with extension
fd -e rs # All Rust files
fd -e md # All Markdown files
fd -e js -e ts # JavaScript and TypeScript
fd -e rs # All Rust files
fd -e md # All Markdown files
fd -e js -e ts # JavaScript and TypeScript
Case-sensitive search
Case-sensitive search
fd -s Config # Only exact case match
undefinedfd -s Config # Only exact case match
undefinedPattern Matching
模式匹配
bash
undefinedbash
undefinedRegex patterns
Regex patterns
fd '^test_.*.py$' # Python test files
fd '.config$' # Files ending in .config
fd '^[A-Z]' # Files starting with uppercase
fd '^test_.*.py$' # Python test files
fd '.config$' # Files ending in .config
fd '^[A-Z]' # Files starting with uppercase
Glob patterns
Glob patterns
fd '.lua' # All Lua files
fd 'test-.js' # test-*.js files
undefinedfd '.lua' # All Lua files
fd 'test-.js' # test-*.js files
undefinedAdvanced Filtering
高级过滤
Type Filtering
类型过滤
bash
undefinedbash
undefinedSearch only 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
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
Multiple types
fd -t f -t l pattern # Files and symlinks
undefinedfd -t f -t l pattern # Files and symlinks
undefinedDepth Control
深度控制
bash
undefinedbash
undefinedLimit search depth
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
fd -d 1 pattern # Only current directory
fd -d 3 pattern # Max 3 levels deep
fd --max-depth 2 pattern # Alternative syntax
Minimum depth
Minimum depth
fd --min-depth 2 pattern # Skip current directory
undefinedfd --min-depth 2 pattern # Skip current directory
undefinedHidden and Ignored Files
隐藏文件与被忽略文件
bash
undefinedbash
undefinedInclude hidden files
Include hidden files
fd -H pattern # Include hidden files (starting with .)
fd -H pattern # Include hidden files (starting with .)
Include ignored files
Include ignored files
fd -I pattern # Include .gitignore'd files
fd -u pattern # Unrestricted: hidden + ignored
fd -I pattern # Include .gitignore'd files
fd -u pattern # Unrestricted: hidden + ignored
Show all files
Show all files
fd -H -I pattern # Show everything
undefinedfd -H -I pattern # Show everything
undefinedSize Filtering
大小过滤
bash
undefinedbash
undefinedFile size filters
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
undefinedfd --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
undefinedModification Time
修改时间
bash
undefinedbash
undefinedFiles modified recently
Files modified recently
fd --changed-within 1d # Last 24 hours
fd --changed-within 2w # Last 2 weeks
fd --changed-within 3m # Last 3 months
fd --changed-within 1d # Last 24 hours
fd --changed-within 2w # Last 2 weeks
fd --changed-within 3m # Last 3 months
Files modified before
Files modified before
fd --changed-before 1y # Older than 1 year
undefinedfd --changed-before 1y # Older than 1 year
undefinedExecution and Processing
执行与处理
Execute Commands
执行命令
bash
undefinedbash
undefinedExecute command for each result
Execute command for each result
fd -e jpg -x convert {} {.}.png # Convert all JPG to PNG
fd -e jpg -x convert {} {.}.png # Convert all JPG to PNG
Parallel execution
Parallel execution
fd -e rs -x rustfmt # Format all Rust files
fd -e rs -x rustfmt # Format all Rust files
Execute with multiple results
Execute with multiple results
fd -e md -X wc -l # Word count on all Markdown files
undefinedfd -e md -X wc -l # Word count on all Markdown files
undefinedOutput Formatting
输出格式化
bash
undefinedbash
undefinedCustom output format using placeholders
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
fd -e tf --format '{//}' # Parent directory of each file
fd -e rs --format '{/}' # Filename without directory
fd -e md --format '{.}' # Path without extension
Placeholders:
Placeholders:
{} - Full path (default)
{} - Full path (default)
{/} - Basename (filename only)
{/} - Basename (filename only)
{//} - Parent directory
{//} - Parent directory
{.} - Path without extension
{.} - Path without extension
{/.} - Basename without extension
{/.} - Basename without extension
undefinedundefinedIntegration with Other Tools
与其他工具集成
bash
undefinedbash
undefinedPrefer fd's native execution over xargs when possible:
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)
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
Use with rg for powerful search
fd -e py -x rg "import numpy" {} # Find numpy imports in Python files
fd -e py -x rg "import numpy" {} # Find numpy imports in Python files
Open files in editor
Open files in editor
fd -e md -X nvim # Open all Markdown in Neovim (batch)
fd -e md -X nvim # Open all Markdown in Neovim (batch)
When xargs IS useful: complex pipelines or non-fd inputs
When xargs IS useful: complex pipelines or non-fd inputs
cat filelist.txt | xargs rg "TODO" # Process file from external list
undefinedcat filelist.txt | xargs rg "TODO" # Process file from external list
undefinedCommon Patterns
常用场景
Development Workflows
开发工作流
bash
undefinedbash
undefinedFind test files
Find test files
fd -e test.js -e spec.js # JavaScript tests
fd '^test_.*.py$' # Python tests
fd '_test.go$' # Go tests
fd -e test.js -e spec.js # JavaScript tests
fd '^test_.*.py$' # Python tests
fd '_test.go$' # Go tests
Find configuration files
Find configuration files
fd -g '.config.js' # Config files
fd -g '.env' # Environment files
fd -g '*rc' -H # RC files (include hidden)
fd -g '.config.js' # Config files
fd -g '.env' # Environment files
fd -g '*rc' -H # RC files (include hidden)
Find source files
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/
undefinedfd -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/
undefinedCleanup Operations
清理操作
bash
undefinedbash
undefinedFind and remove
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
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
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
undefinedfd --size +100m -t f # Files over 100 MB
fd --size +1g -t f -x du -h # Size of files over 1 GB
undefinedPath-Based Search
基于路径的搜索
bash
undefinedbash
undefinedSearch in specific directories
Search in specific directories
fd pattern src/ # Only in src/
fd pattern src/ tests/ # Multiple directories
fd pattern src/ # Only in src/
fd pattern src/ tests/ # Multiple directories
Exclude paths
Exclude paths
fd -e rs -E target/ # Exclude target directory
fd -e js -E node_modules -E dist # Exclude multiple paths
fd -e rs -E target/ # Exclude target directory
fd -e js -E node_modules -E dist # Exclude multiple paths
Full path matching
Full path matching
fd -p src/components/.*.tsx$ # Match full path
undefinedfd -p src/components/.*.tsx$ # Match full path
undefinedFind Directories Containing Specific Files
查找包含特定文件的目录
bash
undefinedbash
undefinedFind all directories with Terraform configs
Find all directories with Terraform configs
fd -t f 'main.tf$' --format '{//}'
fd -t f 'main.tf$' --format '{//}'
Find all directories with package.json
Find all directories with package.json
fd -t f '^package.json$' --format '{//}'
fd -t f '^package.json$' --format '{//}'
Find Go module directories
Find Go module directories
fd -t f '^go.mod$' --format '{//}'
fd -t f '^go.mod$' --format '{//}'
Find Python project roots (with pyproject.toml)
Find Python project roots (with pyproject.toml)
fd -t f '^pyproject.toml$' --format '{//}'
fd -t f '^pyproject.toml$' --format '{//}'
Find Cargo.toml directories (Rust projects)
Find Cargo.toml directories (Rust projects)
fd -t f '^Cargo.toml$' --format '{//}'
**Note:** Use `--format '{//}'` instead of piping to xargs - it's faster and simpler.fd -t f '^Cargo.toml$' --format '{//}'
**注意:** 优先使用`--format '{//}'`而非管道传给xargs,速度更快也更简单。Best Practices
最佳实践
When to Use fd
- Finding files by name or pattern
- Searching with gitignore awareness
- Fast directory traversal
- Type-specific searches
- Time-based file queries
When to Use find Instead
- Complex boolean logic
- POSIX compatibility required
- Advanced permission checks
- Non-standard file attributes
Performance Tips
- Use for sequential search if order matters
-j 1 - Combine with to limit scope
--max-depth - Use to skip directory processing
-t f - Leverage gitignore for faster searches in repos
Integration with rg
bash
undefined什么时候使用fd
- 按名称或模式查找文件
- 需要识别gitignore规则的搜索
- 快速目录遍历
- 按特定类型搜索
- 基于时间的文件查询
什么时候该用find
- 需要复杂的布尔逻辑
- 要求POSIX兼容性
- 高级权限检查
- 非标准文件属性查询
性能提示
- 如果顺序很重要,使用进行顺序搜索
-j 1 - 结合限制搜索范围
--max-depth - 使用跳过目录处理
-t f - 在代码仓库中利用gitignore规则加快搜索速度
与rg集成
bash
undefinedPrefer native execution over xargs
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
**Use fd's Built-in Execution**
```bashfd -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内置执行能力**
```bashfd can execute directly — no need for xargs
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
undefinedfd -t f 'main.tf$' --format '{//}' # Find dirs containing main.tf
fd -e log -x rm # Delete all .log files
undefinedQuick Reference
快速参考
Essential Options
核心选项
| 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 | |
| 选项 | 用途 | 示例 |
|---|---|---|
| 按扩展名过滤 | |
| 按类型过滤(f/d/l/x) | |
| 最大搜索深度 | |
| 包含隐藏文件 | |
| 包含被忽略的文件 | |
| 无限制搜索(不忽略任何文件) | |
| 排除指定路径 | |
| 为每个结果执行命令 | |
| 批量执行命令 | |
| 区分大小写搜索 | |
| 按Glob模式匹配 | |
| 自定义输出格式 | |
Time Units
时间单位
- = seconds
s - = minutes
m - = hours
h - = days
d - = weeks
w - = years
y
- = 秒
s - = 分钟
m - = 小时
h - = 天
d - = 周
w - = 年
y
Size Units
大小单位
- = bytes
b - = kilobytes
k - = megabytes
m - = gigabytes
g - = terabytes
t
- = 字节
b - = 千字节
k - = 兆字节
m - = 吉字节
g - = 太字节
t
Common Command Patterns
常用命令模式
bash
undefinedbash
undefinedFind recently modified source files
Find recently modified source files
fd -e rs --changed-within 1d
fd -e rs --changed-within 1d
Find large files in current directory
Find large files in current directory
fd -d 1 -t f --size +10m
fd -d 1 -t f --size +10m
Find executable scripts
Find executable scripts
fd -t x -e sh
fd -t x -e sh
Find config files including hidden
Find config files including hidden
fd -H -g 'config'
fd -H -g 'config'
Find and count lines
Find and count lines
fd -e py -X wc -l
fd -e py -X wc -l
Find files excluding build artifacts
Find files excluding build artifacts
fd -e js -E dist -E node_modules -E build
fd -e js -E dist -E node_modules -E build
Find all Terraform/IaC project directories
Find all Terraform/IaC project directories
fd -t f 'main.tf$' --format '{//}'
fd -t f 'main.tf$' --format '{//}'
Find all Node.js project roots
Find all Node.js project roots
fd -t f '^package.json$' --format '{//}'
This makes fd the preferred tool for fast, intuitive file finding in development workflows.fd -t f '^package.json$' --format '{//}'
这使得fd成为开发工作流中快速、直观查找文件的首选工具。