安装
brew install fd
命令行选项
USAGE:
fd [FLAGS/OPTIONS] [<pattern>] [<path>...]
FLAGS:
-H, --hidden 搜索隐藏的文件和目录
-I, --no-ignore 不要忽略 .(git | fd)ignore 文件匹配
--no-ignore-vcs 不要忽略.gitignore文件的匹配
-s, --case-sensitive 区分大小写的搜索(默认值:智能案例)
-i, --ignore-case 不区分大小写的搜索(默认值:智能案例)
-F, --fixed-strings 将模式视为文字字符串
-a, --absolute-path 显示绝对路径而不是相对路径
-L, --follow 遵循符号链接
-p, --full-path 搜索完整路径(默认值:仅限 file-/dirname)
-0, --print0 用null字符分隔结果
-h, --help 打印帮助信息
-V, --version 打印版本信息
OPTIONS:
-d, --max-depth <depth> 设置最大搜索深度(默认值:无)
-t, --type <filetype>... 按类型过滤:文件(f),目录(d),符号链接(l),
可执行(x),空(e)
-e, --extension <ext>... 按文件扩展名过滤
-x, --exec <cmd> 为每个搜索结果执行命令
-E, --exclude <pattern>... 排除与给定glob模式匹配的条目
--ignore-file <path>... 以.gitignore格式添加自定义忽略文件
-c, --color <when> 何时使用颜色:never,*auto*, always
-j, --threads <num> 设置用于搜索和执行的线程数
-S, --size <size>... 根据文件大小限制结果。
ARGS:
<pattern> the search pattern, a regular expression (optional)
<path>... the root directory for the filesystem search (optional)
教程
首先,为了获得所有可用的命令行选项的概述,您可以运行fd -h
的简明帮助消息 (见上文) 或fd --help
更详细的版本.
简单搜索
fd设计用于查找文件系统中的条目. 你可以执行的最基本的搜索就是运行一个参数:搜索模式的fd. 例如,假设您想查找您的旧脚本 (包括netflix
) :
> fd netfl
Software/python/imdb-ratings/netflix-details.py
如果只调用一个这样的参数,fd递归检索当前目录中, 包含模式netfl
的任何条目.
正则表达式搜索
搜索模式被视为正则表达式. 这里,我们搜索开始x
并以rc
结束的条目. :
> cd /etc
> fd '^x.*rc$'
X11/xinit/xinitrc
X11/xinit/xserverrc
指定根目录
如果我们想搜索一个特定的目录,它可以作为第二个参数fd:
> fd passwd /etc
/etc/default/passwd
/etc/pam.d/passwd
/etc/passwd
仅运行fd
fd可以不带参数调用. 这是非常有用的,以便快速地查看当前目录中的所有条目,递归地 (类似于ls -R
) :
> cd fd/tests
> fd
testenv
testenv/mod.rs
tests.rs
搜索特定的文件扩展名
通常,我们对特定类型的所有文件感兴趣. 这可以用-e
(或) --extension
选择权. 在这里,我们搜索FD仓库中的所有md文件:
> cd fd
> fd -e md
CONTRIBUTING.md
README.md
这个-e
选项可以与搜索模式结合使用:
> fd -e rs mod
src/fshelper/mod.rs
src/lscolors/mod.rs
tests/testenv/mod.rs
隐藏和忽略的文件
默认情况下,fd不搜索隐藏目录,不在搜索结果中显示隐藏文件. 若要禁用此行为,我们可以使用-H
(或) --hidden
选项:
> fd pre-commit
> fd -H pre-commit
.git/hooks/pre-commit.sample
如果我们在一个Git存储库 (或者包括Git存储库) 中工作,fd不搜索.gitignore
文件中匹配模式 (并且不显示文件) . 若要禁用此行为,我们可以使用-I
(或) --no-ignore
选项:
> fd num_cpu
> fd -I num_cpu
target/debug/deps/libnum_cpus-f5ce7ef99006aa05.rlib
真正搜索全部的文件和目录,简单地组合隐藏和忽略的特性来显示一切 (-HI
)
排除特定文件或目录
有时我们希望忽略来自特定子目录的搜索结果. 例如,我们可能要搜索所有隐藏的文件和目录 (-H
,但仍会排除所有.git
目录. 我们可以使用-E
(或) --exclude
选择此选项. 它以任意的模式作为一个参数:
> fd -H -E .git …
我们也可以用这个来跳过安装的目录:
> fd -E /mnt/external-drive …
或跳过某些文件类型:
> fd -E '*.bak' …
为了让这些模式永久不变,你可以创建一个.fdignore
文件. 他们工作得很像.gitignore
文件. 例如:
> cat ~/.fdignore
/mnt/external-drive
*.bak
使用fd 带xargs
或parallel
如果我们想在所有搜索结果上运行命令,我们可以将输出管xargs
:
> fd -0 -e rs | xargs -0 wc -l
这里,-0
选项告诉fd用空字符 (而不是换行符) 分隔搜索结果. 以同样的方式,xargs
的-0
选项同样告诉它以这种方式读取输入.
与其他程序的集成
使用fd与fzf
你可以使用fd生成fzf命令行模糊查找器的输入:
export FZF_DEFAULT_COMMAND='fd --type file'
export FZF_CTRL_T_COMMAND="$FZF_DEFAULT_COMMAND"
然后,您可以键入vim <Ctrl-T>
在你的终端打开FZF,也即是fd的搜索结果.
或者,您可能喜欢遵循符号链接并包含隐藏文件 (但不包括.git
文件夹) :
export FZF_DEFAULT_COMMAND='fd --type file --follow --hidden --exclude .git'
你甚至可以通过设置fzf内的fd的颜色输出:
export FZF_DEFAULT_COMMAND="fd --type file --color=always"
export FZF_DEFAULT_OPTS="--ansi"
Demo
查找并打开文件夹
fd No.1-折线图 -t d -x open