sharkdp/fd
效率与系统工具一个用于在文件系统中快速查找文件和目录的命令行工具,是 find 的易用替代品。
项目介绍
fd 用于在文件系统中查找条目,目标是替代 find 的常见用法,用更短、更直观的命令和合理的默认值减少记忆负担。它默认按正则表达式匹配,也可用 -g 切换到 glob;目录遍历是并行的,结果会像 ls 一样按文件类型着色。默认只匹配文件名,需要匹配完整路径时使用 -p/--full-path。
默认行为偏向实用:跳过隐藏文件和目录,并遵循 .gitignore、.fdignore 和 .ignore 规则,这两点都可以关闭。它还能对每个结果执行命令(-x/--exec,并行执行),或用全部结果调用一次命令(-X/--exec-batch),支持 {}、{/}、{.} 等占位符。适合经常在终端里定位文件或批量处理文件的开发者和普通用户。
快速使用
通过包管理器或 Cargo 安装:
cargo install fd-find
在 Debian/Ubuntu 上,软件包提供的可执行文件名为 fdfind;如果 fd 名称未被占用,README 建议创建一个指向 fd 的链接。也可以使用 Homebrew(brew install fd)、Scoop、Chocolatey、Winget,或从 release 页面下载预编译二进制。
进入要搜索的目录后,用单个参数开始:
fd netfl
这会递归查找名称中包含 netfl 的条目并输出路径。想快速浏览当前目录下的所有条目,可以不带参数运行 fd;指定目录时使用 . 之类的通配模式。fd -h 显示简明选项,fd --help 显示完整说明。
常见用法:
fd -e md # 所有 Markdown 文件
fd -e rs mod # 名称匹配 mod 的 Rust 文件
fd '^x.*rc$' # 正则表达式
fd -e zip -x unzip # 对每个压缩包并行执行 unzip
fd -g 'test_*.py' -X vim # 用一个编辑器实例打开匹配文件
选项可以写在模式和路径之后。-x、-X 之后的参数属于被执行的命令,所以同时要传模式和路径时,应把这两个选项放在最后。占位符是否需要加引号取决于所用 shell。
使用约束
- 从源码构建需要 Rust 1.90.0 或更高版本,以及
make。 - 默认不搜索隐藏条目,也不搜索被忽略规则排除的内容。需要搜索全部内容时使用
-H、-I或-u/--unrestricted;按完整路径搜索需要-p。 -x并行执行命令,可用-j/--threads限制并发(例如--threads=1串行执行)。shell 的 alias 和函数不能直接作为-x/-X的命令使用。-X rm这类删除操作应先不带删除步骤试运行。README 也提示:递归删除嵌套的同名目录时可能出现竞态条件。- 发布的 Linux 二进制使用 jemalloc,预加载其他内存分配器可能导致崩溃;需要预加载时可用
cargo build --release --no-default-features构建。 - 彩色输出依赖
LS_COLORS环境变量,同时遵循NO_COLOR。 - 项目按 MIT 和 Apache-2.0 双许可证分发。
HotRepo 点评
在 2026-11-06 的 Rust 日榜上,fd 新增 100 星,当天最好名次为第 13。Hacker News 上的讨论从 2017 年的 Show HN(456 分)延续到 2019、2022、2024 年,2025 年的讨论帖获得 718 分和 294 条评论,说明它持续被拿出来讨论,而不是只在一轮发布时出现。讨论中有用户称赞维护者的终端工具,也有人指出 fd 与 rg 的同名参数含义不一致,这反映了在已有命令习惯之外再引入一个搜索工具的摩擦。README 还包含作者在单台机器上对比 fd 与 find 的基准测试,并明确说明结果可能因环境而异。
本文由 AI 根据项目 README 生成,更新于 ,以项目官方文档为准。