之前介绍过,CLI 是 Rust 的一块重要市场。类 Unix 系统下有很多牛逼的命令,但都挺古老的,而且不一定特别好用。比如 find 这个命令,实话说,很多人用不明白,感觉用法跟其他命令不太一致。
比如查找当前目录及其子目录下,文件名包含「标准库」的文件:
$ find . -name 标准库
很多命令,要查找的目标目录放在最后,find 却不是。。。而且,查找速度很慢!
而这个 Rust 的轮子:https://github.com/sharkdp/fd,Star 数 18k+,是一个简单ㄡ快速且用户友好的 find 替代方案。而且,Windows 下也可以方便使用。
怎么个友好法?就比如上面的例子,fd 这么使用:
$ fd 标准库
查找速度很快,而且结果会根据不同类型文件不同颜色显示,真的很现代。
具体来说,fd 有如下特征:
fd PATTERN
而不是find -iname '*PATTERN*'
..gitignore
文件中的模式。此外,还有其他附加功能,比如:
# 转换 所有 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
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)
如何安装呢?作为一名 Rustacean,自然通过 cargo 安装:
$ cargo install fd-find
当然,官方也提供了其他不同操作系统下的安装方式,在项目首页都有说明。
强烈建议大家可以试试这个工具,远离 find。
我是 polarisxu,北大硕士毕业,曾在 360 等知名互联网公司工作,10多年技术研发与架构经验!2012 年接触 Go 语言并创建了 Go 语言中文网!著有《Go语言编程之旅》、开源图书《Go语言标准库》等。
坚持输出技术(包括 Go、Rust 等技术)、职场心得和创业感悟!欢迎关注「polarisxu」一起成长!也欢迎加我微信好友交流:gopherstudio