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 -l

Warning

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 时一次接收全部结果。

官方资料