Linux 的“一切”搜索的替代方法是什么?

Fre*_*ind 7 linux software-rec file-search

在 windows 中有一个非常好的搜索工具,叫做Everything,它可以让我们按名称搜索文件。它非常快,而且易于使用。

现在我想知道Linux中有没有类似的工具?命令行或 GUI 都可以,但最重要的是速度快。

Dav*_*man 8

如果您只是在寻找文件名,locate这在 Linux 系统上是非常标准的,尽管您的发行版可能没有默认安装。

$ locate vmlinuz
/vmlinuz
/vmlinuz.old
/boot/vmlinuz-2.6.35-28-generic
/boot/vmlinuz-2.6.35-30-generic
Run Code Online (Sandbox Code Playgroud)

locate 依赖于现有文件的数据库,该数据库通常由 cron 作业每晚更新,因此其结果或多或少是即时的。

如果您需要最新的结果,您可以改为使用find,但这需要一段时间,因为它会读取文件系统并检查存在的每个文件。

$ find / -name \*vmlinuz\*
Run Code Online (Sandbox Code Playgroud)

如果您不是以 root 身份运行它,最终将返回相同的结果,以及许多“权限被拒绝”错误。请注意, to 的第一个参数find是要查找的目录(包括子目录),因此如果您对目标文件可能在哪里有一些了解,则可以将其限制为文件系统的一部分以大大加快速度。

  • Everything 使用 NTFS 的日志和更改日志来几乎立即定位文件。相比之下,查找速度非常慢。所以他需要的可能是某种版本的locate 以及与ext3/4 日志挂钩的东西。不确定是否有人打扰。 (2认同)