跳转至

Fd

简介

fd 是个文件查找器,功能和 find 类似,但使用起来更友好

安装

# Windows
scoop install fd

使用

基本使用

# 列出当前目录下的所有文件
fd
# 限制递归深度
fd -d 2
# 指定拓展名
fd -e md
# 指定搜索路径
fd --search-path docs
# 修改输出格式
fd --format "* {}"
占位符

{} 作为占位符,表示文件的完整路径。这个占位符有一些变种

  • {/} 去除父目录
  • {//} 父目录
  • {.} 不带拓展名
  • {/.} 去除父目录且不带拓展名

fd 还集成了 xargs 的功能,可以让运行脚本更方便。其中占位符的用法是相同的

# 将查找到的每条结果分别传给 command
fd -x command "{}"
# 对查找到的所有结果一起传给 command
fd -X command "{}"

示例

fd 的特点就是用法简单,比起 find 要好写、好理解。由于 fd 的用法非常多,我无法一一介绍,就举几个我自己实际使用 fd 的场景。


我有一个用 LaTeX 写的学习笔记,现在想全部迁移到 Markdown,因为后者更适配静态网站生成器。以下命令可以将当前目录下(包括子目录)的所有 tex 文件转为 md 格式,并以展平的结构移动到一个新的目录里

fd -e tex -x pandoc "{}" -o "{.}.md"
mkdir markdown
fd -e md -x mv "{}" markdown/

我想统计这个仓库中的所有 markdown 文件加起来有多少字,就可以使用如下命令

fd -e md -X wc

我要检查某条 PATH 中是否有 exe 文件或 dll 文件被覆盖,可以运行以下命令

fd -e exe -e dll -d 1 --search-path "search/path" -x which '{/}' | rg -v -F "search/path"
# Windows 系统需要额外处理后一个路径,比如改为 rg -v -F "$(cygpath 'search/path')"