前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【每日一库】fd - 文件搜索神器

【每日一库】fd - 文件搜索神器

作者头像
MikeLoveRust
发布2019-07-09 14:49:30
9020
发布2019-07-09 14:49:30
举报
文章被收录于专栏:Rust语言学习交流

find 命令,是我们 Linuxer 经常会用到的命令行工具之一,频率可能会比昨天介绍的 grep/ripgrep 工具稍微低一点。它的作用是在文件系统目录中搜索符合指定文件名模式的文件。这里介绍的 fd 是 find 的 Rust 替代实现。目前在 github 上 star 数量接近 10000。

fd 的语法与 find 有一些不同,这是这个工具的取舍。

先来看看这个工具的效果。

仅仅有颜值肯定不能吸引 10000 左右的加星。它是实力型选手。下面是一简单的性能评测(仅做参考):

对一个包含大约19万个子目录,100万个文件的目录,先使用 find 进行搜索:

代码语言:javascript
复制
代码语言:javascript
复制
Benchmark #1: find ~ -iregex '.*[0-9]\.jpg$'

  Time (mean ± σ):      7.236 s ±  0.090 s
 
  Range (min … max):    7.133 s …  7.385 s
  

不用正则模式再来一次

代码语言:javascript
复制
代码语言:javascript
复制
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,打开隐藏文件搜索

代码语言:javascript
复制
Benchmark #3: fd -HI '.*[0-9]\.jpg$' ~

  Time (mean ± σ):     811.6 ms ±  26.9 ms
 
  Range (min … max):   786.0 ms … 870.7 ms

关掉隐藏文件搜索

代码语言:javascript
复制
Benchmark #4: fd '[0-9]\.jpg$' ~

  Time (mean ± σ):     123.7 ms ±   6.0 ms
 
  Range (min … max):   118.8 ms … 140.0 ms
代码语言:javascript
复制

性能竟然有这样大的提升(5到几十倍),小编大吃一惊!因为 find 这种 C 语言实现的东西 ,早已成为人们心目中的速度标准了 。

下面罗列一下 fd 的特性:

  • 语法更主方便:用 fd PATTERN 替代 find -iname '*PATTERN*'
  • 输出是彩色的
  • 一个字,快
  • 智能监测大小写搜索意图
  • 默认忽略隐藏文件不搜索
  • 默认忽略 .gitignore 中指定的文件和目录不搜索
  • 正则表达式支持
  • Unicode 支持
  • 命令名要短一半(:D)
  • 可以类似 GNU Parallel 一样并行执行命令

是不是迫不及待地想要试一试了,使用下面命令安装

代码语言:javascript
复制
cargo install fd-find
代码语言:javascript
复制
Just do it.
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-04-18,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Rust语言学习交流 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
命令行工具
腾讯云命令行工具 TCCLI 是管理腾讯云资源的统一工具。使用腾讯云命令行工具,您可以快速调用腾讯云 API 来管理您的腾讯云资源。此外,您还可以基于腾讯云的命令行工具来做自动化和脚本处理,以更多样的方式进行组合和重用。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档