列出按相似性排序的具有相似名称的文件

列出按相似性排序的具有相似名称的文件

是否可以搜索文件并按相似度降序列出它们?

例如:

以下文件位于/:

  • 你好
  • 直升机
  • 你好

当我搜索“你好”时,我想要一个如下列表:

  • 你好
  • 你好
  • 直升机

当然,具有 100% 相似度的文件将是我获得的文件find / -name 'hello'

我想要这样的原因如下:我不想知道文件是如何准确写入的才能找到它。

答案1

zsh

setopt extendedglob # best in ~/.zshrc
ls -ld -- (#ia1)hello # case-insensitive, allow one error
ls -ld -- (#ia2)hello # case-insensitive, allow up to two errors.

递归地搜索隐藏文件(以及隐藏目录)((D)):

ls -ld -- /**/(#ia2)hello(D)

(请注意,它不执行任何操作按相似度排序,仅ls按其参数名称排序)。

答案2

这当然是可能的,尽管不受欢迎。

我从未真正使用过该工具,但我知道要寻找什么;你可能想尝试fzf

一般来说,你想要的是所谓的“模糊搜索”,这个名字来源于模糊逻辑。你知道或多或少你想要什么。或多或少的部分使它变得模糊。

如果我是你,我会fzf尝试一下,但请考虑其他选择:

  • 如果您自己创建了该文件,并且知道它是如何开始的,则可以使用制表符完成来查找它(开始键入文件名,然后按制表符自动完成/查看可能的选项)。
  • 如果您确实不知道文件的名称,但知道一些其他数据(大小、创建日期等),您可以通过这些量词进行搜索。

相关内容