
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*'是不是迫不及待地想要试一试了,使用下面命令安装
cargo install fd-findJust do it.