小伙伴们,大家好,我是小溪,见字如面。在探索提升命令行终端执行效率时发现一个高性能文件查找工具fd,今天了解一下基本使用方式。
当前使用版本
fd 10.4.2
优势
-
Rust编写有极高的执行速度
-
跨平台兼容
-
开箱即用
限制
-
POSIX 标准兼容性不足,无法直接替代find
-
默认过滤可能导致"漏搜"
简介
fd 是一款由 Rust 开发的命令行文件查找工具,旨在作为 find 的快速、实用且人性化的替代方案。它通过多线程并行扫描实现极高的搜索性能,拥有更简洁的语法和色彩丰富的输出,并默认采用"智能大小写"匹配、自动忽略隐藏文件及 .gitignore 中的内容,让文件搜索变得既高效又直观。
Github地址:github.com/sharkdp/fd

安装方式
Homebrew
shell
$ brew install fd
Ubuntu
shell
$ apt install fd-find
Arch Linux
shell
$ pacman -S fd
安装完成后,在命令行终端输入 fd -V 查看安装结果

基本使用
命令行参数

命令参数解析如下:
-
-H, --hidden:搜索隐藏文件和目录
-
-I, --no-ignore:不要忽略 .(git|fd)ignore 文件
-
-s, --case-sensitive:区分大小写搜索(默认:智能大小写模式)
-
-i, --ignore-case:不区分大小写搜索(默认:智能大小写模式)
-
-g, --glob:使用基于 Glob 的搜索(默认:正则表达式)
-
-a, --absolute-path:显示绝对路径而非相对路径
-
-l, --list-details:使用长列表格式,显示文件元数据
-
-L, --follow:追踪符号链接
-
-p, --full-path:匹配完整绝对路径(默认:仅匹配文件名)
-
-d, --max-depth :设置最大搜索深度(默认:无限制)
-
-E, --exclude :排除匹配给定通配符模式的条目
-
-t, --type :按类型过滤:文件 (f)、目录 (d)、符号链接 (l)、可执行文件 (x) 等
-
-e, --extension :按文件扩展名过滤
-
-S, --size :根据文件大小限制结果
-
--changed-within:按文件修改时间过滤(比给定时间晚)
-
--changed-before:按文件修改时间过滤(比给定时间早)
-
-o, --owner:按所属用户和/或组过滤
-
--format :根据模板格式化打印结果
-
-x, --exec :为每个搜索结果执行一次命令
-
-X, --exec-batch :将所有搜索结果作为参数一次性执行命令
-
-c, --color :何时使用颜色(auto, always, never)
-
--hyperlink=:在输出路径中添加超链接
-
--ignore-contain :忽略包含指定名称条目的目录
-
-h, --help:打印帮助信息
-
-V, --version:打印版本号
基本搜索
直接传入关键词即可在当前目录下递归搜索(默认支持正则表达式)
shell
$ fd login
指定搜索目录
shell
$ fd login tests/
区分大小写搜索
shell
$ fd -s Login
按文件类型、扩展名过滤
按扩展名搜索 (-e),寻找特定类型的文件(如 .md 文件)
shell
$ fd -e py
或
$ fd -e .py
按类型搜索 (-t)
shell
# 文件 (f)
$ fd -tf
# 目录 (d)
$ fd -td
# 符号链接 (l)
$ fd -tl
# 可执行文件 (x)
$ fd -tx
隐藏与忽略文件
fd默认会自动跳过隐藏文件/目录以及 .gitignore 中列出的条目,如果想取消这些限制,可以使用命令扩展
搜索隐藏文件 (-H)
shell
$ fd -H login

不忽略 .gitignore 规则 (-I)
shell
$ fd -I node_modules
搜索所有文件(解除所有限制 -u)相当于 -HI
shell
$ fd -u target
条件过滤
按修改时间过滤
shell
# 查找近1天内修改过
$ fd --changed-within 1d
# 查找近7天前修改的文件
$ fd --changed-before 7d
按文件大小过滤
shell
# 查找大于100MB的文件
$ fd --size +100M
# 查找小于1KB的文件
$ fd --size -1k
按文件权限/所有者过滤
shell
查找属于用户 username 的文件
$ fd --owner username
# 查找属于用户root的文件
$ fd -o root
设置最大搜索深度(-d)
shell
$ fd -d 2 pattern
正则与匹配
查找以 test_开头并以 .py 结尾的文件
shell
$ fd '^test_.*\.py$'
匹配多个扩展名
shell
$ fd '\.(jpg|py)$'
Glob通配符匹配
shell
$ fd -g 'test_*.py'
输出与格式化
自定义打印格式 (--format)
powershell
$ fd -e md --format 'Found Markdown file: {}'

显示文件元数据长列表 (-l)
shell
$ fd -e py -l

显示绝对路径 (-a)
shell
$ fd -a test_login_page.py
命令执行
并行单条执行 (-x/--exec)
shell
# 将每个匹配到的 .png 图片压缩转换为 .webp
$ fd -e png -x cwebp {} -o {.}.webp
批量一次性执行 (-X / --exec-batch)
shell
# 将搜到的所有 .txt 文件作为参数一次性传给 grep 搜索文本
$ fd -e txt -X grep 'TODO'

一次性统计所有 .py 代码文件的行数
shell
$ fd -e rs -X wc -l
与其他工具配合
以树状图结构展示(结合 tree 命令)
powershell
$ fd --extension md | tree --fromfile

对fd匹配的文件进行检索
shell
$ fd -e py | grep 'login'
友情提示
见原文:终端文件查找工具:fd
本文同步自微信公众号 "程序员小溪" ,这里只是同步,想看及时消息请移步我的公众号,不定时更新我的学习经验。友情提示友情提示