fd
名称、版本与用途
- 名称:fd
- 当前版本:10.4.2
- 路径:
~/.local/bin/fd - 用途:按文件名、扩展名、类型和时间搜索文件,是常用
find场景的简洁替代。
基本语法(Synopsis)
fd [OPTIONS] [PATTERN] [PATH ...][] 表示可选项,... 表示可重复;大写名称表示需要替换的参数。
当前安装与更新
当前是由本地 install_cli_tools.sh 下载的官方 x86_64 Linux 二进制,不属于 dpkg。
脚本会跳过已安装版本;升级时从官方 release 下载新版本,验证后替换 ~/.local/bin/fd,并重新生成:
fd --gen-completions zsh > ~/.zfunc/_fd忽略规则与补全
fd 没有通用主配置文件,主要读取:
- 项目的
.gitignore - 用户或项目的
.ignore - fd 专用的
.fdignore
当前 zsh 补全位于 ~/.zfunc/_fd。
zsh 启动集成
间接相关:二进制通过 PATH 加载,补全通过 fpath 加载。
基本功能与推荐用法
fd config # 模糊匹配名称
fd -e md # 按扩展名
fd -t d cache # 只找目录
fd -H -E .git '.env' # 包含隐藏项、排除 .git
fd --changed-within 1w -t f # 一周内修改的文件
fd -e log -x wc -l # 对每个结果执行命令
fd -0 -e json | xargs -0 jq empty # 安全处理特殊文件名
fd -t f | fzf # 交互选择fd 默认忽略隐藏文件和 .gitignore 排除项。需要完整、复杂的 POSIX 条件表达式时使用 find。
筛选后执行命令
下面的命令在 /path/to/dir 中查找所有 .sh 普通文件,并逐个增加可执行权限:
fd -e sh -t f . /path/to/dir # 先预览匹配结果
fd -e sh -t f . /path/to/dir -x chmod +x {}其中,. 是匹配所有名称的 PATTERN,而 /path/to/dir 是搜索起点。-x 后面的参数全部属于被执行的命令,因此建议把 -x 放在最后。
-x 默认并行地为每个结果执行一次命令;需要顺序执行时使用:
fd --threads=1 -e sh -t f . /path/to/dir -x chmod +x {}如果命令可以一次接收多个文件,使用 -X 批量执行通常更高效:
fd -e rs -t f . src/ -X wc -lWarning
chmod、rm、mv等命令会修改文件。先运行不带-x或-X的筛选命令检查结果,再执行实际操作。
示例中的选项、参数与子命令
本表解释本页示例实际出现的选项、参数、子命令及必要的辅助命令语法。
| 语法元素 | 含义 |
|---|---|
--gen-completions SHELL | 为指定 shell 生成补全脚本。 |
-e EXT, --extension EXT | 只匹配指定扩展名。 |
-t TYPE, --type TYPE | 只匹配指定类型,如文件或目录。 |
-H, --hidden | 包含隐藏文件和目录。 |
-E GLOB, --exclude GLOB | 排除匹配 glob 的路径。 |
--changed-within DURATION | 只匹配指定时间内修改的文件。 |
PATTERN | 文件名匹配模式;示例中的 . 表示匹配所有名称。 |
PATH ... | 一个或多个搜索起点;例如 /path/to/dir 或 src/。 |
-x COMMAND ..., --exec COMMAND ... | 默认并行地为每个结果执行一次命令;应放在 fd 参数的最后。 |
-X COMMAND ..., --exec-batch COMMAND ... | 把全部结果作为参数,批量执行命令。 |
{} | -x 或 -X 中的结果路径占位符;省略时会自动追加到命令末尾。 |
--threads=1 | 把搜索和 -x 命令执行限制为单线程,用于要求顺序执行的场景。 |
-0, --print0 | 以 NUL 分隔结果。 |
省略 PATTERN | 匹配 PATH 下的全部条目。 |
chmod +x FILE | 为文件的用户、组和其他用户增加可执行权限。 |
wc -l | 统计文件的换行符数量;配合 -X 时一次接收全部结果。 |