请问大家是如何在当前目录下快速递归搜索某个文件名的?

我目前Emacs上用的是 helm-find 但是这个包感觉速度不够快。想找找更快的方法。尤其是小文件非常多的时候。

2 个赞

helm天生比ivy慢。

不行就用coreutils的find吧

它就是调用的 find 命令。

那可以考虑用locate

当前目录下搜索某个文件名的话 ivy 有个叫作 counsel-fzf 的函数,你可以看看 helm 有没有类似的函数,他调用的是 fzf,我觉得速度挺快的,你可以试试。

用c写个命令

helm-rg

find已经够快了吧,魔改一个cache出来?

fd,刚看了下是支持多平台的。

1 个赞

fzf 或者 rgcounsel中都有对应的命令。

我也常有这个需要,了解过一些提供这功能的命令、包,但是还没用上。

  • 假如目录中的文件数量不多,用 Emacs 内置的方法同步地列出所有的文件,然后补全过滤也通过 Emacs 完成;
  • Git 项目下的文件夹,可以用 git ls-files 列出所有的文件,然后补全过滤通过 Emacs 完成;
  • 任意的文件夹,可以用专门的查找文件的工具,类似于 find 甚至 locate,查找和过滤一次性完成,这个的速度基本取决于自身,应该跟 Emacs 后端没多少关系,尽管各个后端的体验可能不同。

如果git项目,直接使用git相关的比如counsel-git等命令来打开。

任意的文件夹,我最近一直用的懒猫写的这个 grep-dired 。它就是调的find,用起来感觉还不错。

我一直再用,比projectile快多了

可以用我写的 grep-dired, 搜索出来可以用 dired 做很多文件操作处理.

很早之前用过fzf,但是因为有一些莫名的bug,尤其是在helm里的时候。所以那个时候就放 弃了。现在目前用的是 helm-find 一个来自 Helm 包的命令速度一般。除非小文件特别 多,通常来说可以了。但是我就是要在一个有很多小文件的目录下经常搜索。所以寻找一个 更快的解决方案。 我通常将自己所有手机的命令,软件以单独一个Org文件记录下来。导致 我几千个Org文件。

上面提的几个方案我都会去尝试下的。谢谢你们的回答。 :slight_smile:

话说 helm-rg 是如何搜索文件g名的?我一直是用它来搜索文件内容。ripgrep确实速度 很快。深有体会。

我原本也有用一下 find-dired。对比了下 grep-dired 已经很快了。因为我基本上不 需要跨平台,而我自己也常用 ripgrep 来搜索。所以我觉得 grep-dired 比较h适合我。 还是谢谢各位。谢谢懒猫。

一直用find命令递归搜索文件名,ripgrep递归搜索文件内容,看了你 @ashfinal 的回复,发现 fd 比find快的多,今天把文件名搜索后端改成了 fd ,感觉 fd 和ripgrep有一些相似之处,都是用rust写的,都跨平台

1 个赞

文件内容用 ripgrep 的话, 可以用我的 color-rg.el 哈哈哈哈

确实快,刚写了个helm扩展,但是参数好像必须要关掉自带的颜色,--color never,否则helm输出会有乱码。

fd is super fast too. I suggest it too.

1 个赞