ITPub博客

首页 > 数据库 > 数据库开发技术 > 【每日一库】fd - 文件搜索神器

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

原创 数据库开发技术 作者:Rust语言中文社区 时间:2019-04-18 21:37:21 0 删除 编辑

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


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


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


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


对一个包含大约19万个子目录,100万个文件的目录,先使用 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  

不用正则模式再来一次


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,打开隐藏文件搜索

Benchmark #3: fd -HI '.*[0-9]\.jpg$' ~
Time (mean ± σ): 811.6 ms ± 26.9 ms Range (min … max): 786.0 ms … 870.7 ms

关掉隐藏文件搜索

Benchmark #4: fd '[0-9]\.jpg$' ~
Time (mean ± σ): 123.7 ms ± 6.0 ms Range (min … max): 118.8 ms … 140.0 ms


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


下面罗列一下 fd 的特性:


  • 语法更主方便:用 fd PATTERN 替代 find -iname '*PATTERN*'

  • 输出是彩色的

  • 一个字,快

  • 智能监测大小写搜索意图

  • 默认忽略隐藏文件不搜索

  • 默认忽略 .gitignore 中指定的文件和目录不搜索

  • 正则表达式支持

  • Unicode 支持

  • 命令名要短一半(:D)

  • 可以类似 GNU Parallel 一样并行执行命令


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

cargo install fd-find
Just do it.




原文作者:Rust语言中文社区;如有侵权,请联系管理员删除。

请登录后发表评论 登录
全部评论

注册时间:2020-06-11

  • 博文量
    1769
  • 访问量
    718318