#find #command #fuzzy-search #linux #directory #performance #file-path

bin+lib ffind

ffind 是一个命令行工具,它实现了 Linux find 命令的核心功能,并支持“模糊”搜索,性能显著提升

1 个不稳定版本

0.1.0 2021 年 3 月 29 日

#48#fuzzy-search

Unlicense OR MIT

160KB
74

ffind

ffind 是 Linux 的 find 命令的一个有限但性能更好的版本。除了查找给定文件名的路径外,ffind 还支持“模糊”搜索(因此有额外的 f)。当尝试找到文件但不知道其确切名称时,这很有用。

ffind 的未来版本将尝试实现 Linux 内置 find 命令的许多有用功能。

用法

ffind [OPTIONS] <query> [starting-dir]

FLAGS:
    -h, --help       Prints help information
    -V, --version    Prints version information

OPTIONS:
    -f, --fuzzy <fuzzy>    

ARGS:
    <query>           
    <starting-dir>

您可以通过 ffind --help 生成用法。

示例

> ffind someFile.txt
/Users/path/to/file/temp/test2Dir/someFile.txt
/Users/path/to/file/temp/test1Dir/someFile.txt

Took 21 msecs.

此命令将在当前目录中搜索并打印任何名为 someFile.txt 的文件的路径。

> ffind someFile.txt test2Dir
test2Dir/someFile.txt

Took 3 msecs.

此命令将在 myDir 目录中搜索并打印任何名为 someFile.txt 的文件的绝对路径。

> ffind someFile.txt -f 80
/Users/path/to/file/temp/test2Dir/someFile.txt
/Users/path/to/file/temp/test1Dir/someFile.txt
/Users/path/to/file/temp/test1Dir/someFilee.txtt

Took 6 msecs.

此命令将在当前目录中搜索并打印任何名称接近 someFile.txt 的文件的绝对路径。-f 标志表示使用“模糊”搜索,后面的整数表示比较的“强度”。提供 0 的强度将匹配任何内容,而提供 100 的强度将检查严格的字符串相等。在幕后,ffind 使用由 strsim crate 实现的 标准化 Levenshtein 距离。

性能

ffind vs. find

如您所见,在我的机器上,从根目录开始搜索文件名大约比 Linux 的 find 命令快 10 倍。

依赖关系

~4–14MB
~130K SLoC