fd:比 find 快 23 倍的文件搜索工具
文章目录fd比 find 快 23 倍的文件搜索工具速度差异核心功能安装实际使用注意事项fd比 find 快 23 倍的文件搜索工具sharkdp 开发的命令行文件搜索工具 fd目前在 GitHub 上收获了 43000 Star。fd 的定位很明确替代 Unix 系统自带的 find 命令。它用 Rust 编写核心卖点是速度快、语法简单。传统 find 搜索文件时命令写法比较繁琐。比如查找所有包含 netflix 的文件需要写find -iname *netflix*。换成 fd只需要输入fd netfl就行。fd 默认使用正则匹配还会自动忽略 .gitignore 中的条目和隐藏目录省去很多手动排除的麻烦。速度差异fd 作者用 hyperfine 在约 400 万文件的目录下做了基准测试。搜索匹配[0-9].jpg的文件find 需要 19.9 秒fd 只要 854 毫秒快了约 23 倍。这个差距主要来自 fd 的并行目录遍历以及底层使用的 regex 和 ignore crate和 ripgrep 同款。核心功能智能大小写匹配fd 默认忽略大小写但当搜索词包含大写字母时自动切换为大小写敏感。这个行为和 Vim 的 smartcase 一致。按扩展名过滤用-e参数指定文件类型比如fd -e md只搜索 Markdown 文件。也可以组合使用fd -e rs mod会同时匹配 .rs 文件中包含 mod 的条目。并行执行命令fd 支持-x和-X参数可以对搜索结果批量执行外部命令。比如fd -e zip -x unzip会找到所有 zip 文件并并行解压。-X则是把所有结果一次性传给命令适合需要整体处理的场景。排除目录通过-E参数可以排除特定目录或文件类型比如fd -E .git跳过 Git 目录。这些规则也可以写进.fdignore文件中持久化。全路径匹配默认情况下 fd 只匹配文件名。加上--full-path或-p参数后可以对完整路径进行正则匹配。安装fd 的安装方式覆盖了主流平台# Ubuntu / Debianaptinstallfd-find# Fedoradnfinstallfd-find# macOSbrewinstallfd# Windowsscoopinstallfd# 或chocoinstallfd# 从源码编译cargoinstallfd-findUbuntu 和 Debian 下二进制文件叫 fdfind因为 fd 这个名字被另一个包占用了。装好后建议做个软链接ln -s $(which fdfind) ~/.local/bin/fd。实际使用fd 常和 fzf模糊搜索工具搭配。设置环境变量后按 CtrlT 就能在 fd 的搜索结果中快速定位文件exportFZF_DEFAULT_COMMANDfd --type fileexportFZF_CTRL_T_COMMAND$FZF_DEFAULT_COMMAND也可以配合 xargs 处理搜索结果比如统计所有 .rs 文件的行数fd-0-ers|xargs-0wc-l-0参数让 fd 用 NULL 字符分隔结果避免文件名中包含空格时出错。注意事项fd 默认不搜索隐藏文件和 .gitignore 中的内容。如果需要全量搜索加上-u或-H -I参数。fd 也支持.fdignore文件语法和 .gitignore 相同可以把常驻的排除规则写进去。整体来看fd 用更少的字符完成 find 的工作速度快一个数量级对日常开发中的文件搜索场景覆盖得比较完整。43000 的 Star 数也说明社区对这类工具的需求是真实存在的。find 的工作速度快一个数量级对日常开发中的文件搜索场景覆盖得比较完整。43000 的 Star 数也说明社区对这类工具的需求是真实存在的。