「 fd
commit | ⏰ 2018 8.20 |
欢迎 👏
If help, buy me coffee —— 营养跟不
fd
虽然它不寻求复刻find
方便 语法:fd PATTERN
而不是 find -iname '*PATTERN*'
.彩色 终端输出 (类似于ls)- 它是
快速 的 (见基 准 下面 ) . - 聪明
案 例 :默 认情况下,搜索 不 区分 大小 写 . 如果模 式 包含 大 写字 符 *, 则切换为区分 大小 写字 符 . . 默 认情况下,忽 略 隐藏的 目 录和文 件 .忽 略 匹 配 你.gitignore
文 件 中 的 模 式 ,默 认情况.正 则表达式.- Unicode
感知 . 命令 输入量 *50%*优于*find
: -)用 类似于GNU穿 行 的 语法,执行并行命令 .
让我们[0-9].jpg
为结
让我们从find
:
Benchmark #1: find ~ -iregex '.*[0-9]\.jpg$'
Time (mean ± σ ): 7.236 s ± 0.090 s
Range (min … max): 7.133 s … 7.385 s
find
如果
Benchmark #2: find ~ -iname '*[0-9].jpg'
Time (mean ± σ ): 3.914 s ± 0.027 s
Range (min … max): 3.876 s … 3.964 s
现在让我们尝试同样的fd
. fd
总是执行--hidden
--no-ignore
fd
Benchmark #3: fd -HI '.*[0-9]\.jpg$' ~
Time (mean ± σ ): 811.6 ms ± 26.9 ms
Range (min … max): 786.0 ms … 870.7 ms
对于这个fd
find -iregex
find -iname
fd
--hidden
--no-ignore
选项 (
Benchmark #4: fd '[0-9]\.jpg$' ~
Time (mean ± σ ): 123.7 ms ± 6.0 ms
Range (min … max): 118.8 ms … 140.0 ms
关于fdregex
ignore
,还有ripgrep
fd
ls
. 为了LS_COLORS
必须设置. dircolors
LS_COLORS
应该
如果-x
/--exec
选项与
{}
:将 被 替 换为搜索 结果路 径 的 占 位 符 令 牌 (documents/images/party.jpg
){.}
:像 {}
,但 没 有 文 件 扩展名 (documents/images/party
){/}
:占 位 符 ,将 被 搜索 结果的 基 名 替 换 (占 位 符 ) .party.jpg
){//}
:使用 已 发现路 径 的 父 节点 (documents/images
){/.}
:使用 BaseNeNe,将 扩展名 移 除 (party
)
# 转换 所有 jpg 到 png :
fd -e jpg -x convert {} {.}.png
# Unpack all zip files (if no placeholder is given, the path is appended):
fd -e zip -x unzip
# Convert all flac files into opus files:
fd -e flac -x ffmpeg -i {} -c:a libopus {.}.opus
# Count the number of lines in Rust files (the command template can be terminated with ';'):
fd -x wc -l \; -e rs
以及其他
.deb
sudo dpkg -i fd_7.0.0_amd64.deb # adapt version number and architecture
从 FEDORA 28 开始,您可以从fd
:
dnf install fd-find
对于fd
:
dnf copr enable keefle/fd
dnf install fd
你可以从
pacman -S fd
你可以从
emerge -av fd
你可以从
zypper in fd
你可以安fd
xbps-install -S fd
你可以安fd
brew install fd
sudo port install fd
您可以从
fd
scoop install fd
choco install fd
你可以fd
:
nix-env -i fd
你可以安sysutils/fd
portmaster sysutils/fd
你可以通过rust
cargo install fd-find
这个releases页面
git clone https://github.com/sharkdp/fd
# Build
cd fd
cargo build
# Run unit tests and integration tests
cargo test
# Install
cargo install
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设计netflix
) :
> fd netfl
Software/python/imdb-ratings/netflix-details.py
如果netfl
x
并以rc
结束
> cd /etc
> fd '^x.*rc$'
X11/xinit/xinitrc
X11/xinit/xserverrc
如果
> fd passwd /etc
/etc/default/passwd
/etc/pam.d/passwd
/etc/passwd
fdls -R
) :
> cd fd/tests
> fd
testenv
testenv/mod.rs
tests.rs
-e
(--extension
选择权.
> 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
-H
(--hidden
选项:
> fd pre-commit
> fd -H pre-commit
.git/hooks/pre-commit.sample
如果.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
如果xargs
:
> fd -0 -e rs | xargs -0 wc -l
这里,-0
选项xargs
-0
选项
你可以
export FZF_DEFAULT_COMMAND='fd --type file'
export FZF_CTRL_T_COMMAND="$FZF_DEFAULT_COMMAND"
vim <Ctrl-T>
.git
export FZF_DEFAULT_COMMAND='fd --type file --follow --hidden --exclude .git'
你甚
export FZF_DEFAULT_COMMAND="fd --type file --color=always"
export FZF_DEFAULT_OPTS="--ansi"
Emacs
find-file-in-project
(setq ffip-use-rust-fd t)
~/.emacs
~/.emacs.d/init.el
M-x find-file-in-project-by-selected
查找M-x find-file-in-project