终端文件查找工具:fd

小伙伴们,大家好,我是小溪,见字如面。在探索提升命令行终端执行效率时发现一个高性能文件查找工具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

本文同步自微信公众号 "程序员小溪" ,这里只是同步,想看及时消息请移步我的公众号,不定时更新我的学习经验。友情提示友情提示

相关推荐
小溪彼岸5 小时前
终端可视化文件管理工具:Yazi
命令行
Wesleyblue6 天前
Python解释器工作原理解析
命令行·环境变量·工作原理·脚本参数·python解释器
寒水馨6 天前
macOS下载、安装PowerShell-v7.6.4(附安装包powershell-7.6.4-osx-arm64.pkg)
macos·自动化·跨平台·shell·脚本·命令行·powershell
寒水馨6 天前
Linux下载、安装PowerShell-v7.6.4(附安装包powershell-7.6.4-linux-x64.tar.gz)
linux·跨平台·自动化运维·devops·命令行·powershell·脚本语言
其实防守也摸鱼14 天前
GitHub开源项目破圈方法论:从技术自嗨到生态共赢
服务器·数据库·学习·开源·github·命令行·linux系统
其实防守也摸鱼14 天前
前端应用的离线暂停更新策略:构建稳定可靠的渐进式部署方案
服务器·前端·数据库·学习·ai·命令行·linux系统
edwarddamon16 天前
SSH 指定端口建立隧道:打通内网访问完整教程
linux·命令行
栩栩云生17 天前
命令行的门槛从"会写"变成了"会拦"
安全·ai编程·命令行
阿虎儿21 天前
终端中的 ASCII 控制字符
命令行