如何让mlocate仅索引某些目录?

我想在我的Ubuntu服务器上使用mlocate ,但仅用于索引某些目录(例如/home/data ,但不包括/下的所有内容)。 但是,mlocate的标准配置工作方式相反; 指定要删除的路径(使用PRUNE_PATHS )。

有没有简单的方法来实现这一点,或任何类似的实用程序,将做我想要的? (注意:它应该保持像mlocate这样的索引,所以find是不可接受的,例如)谢谢。

您可以使用-U选项(–database-root PATH)

 updatedb -l 0 -U /home/user/music -o /home/user/databasefile 

-o写入输出文件

-l 0使您可以读取它,否则它只能用于locate

然后你就可以使用它了:

 locate -d /home/user/databasefile Dylan 

-d设置数据库路径

要将mlocate与多个根目录一起使用,只需创建两个数据库文件,并使用locate和两个databasepath的选项,如下所示:

 locate -d /home/user/dbfile1 -d /home/user/dbfile2 searchstring 

总结并回答更具体的问题:

 updatedb -l 0 -U /home -o /home/user/home_dbfile updatedb -l 0 -U /data -o /home/user/data_dbfile locate -d /home/user/home_dbfile -d /home/user/data_dbfile Dylan 

编辑文件/etc/updatedb.conf

使用您不想搜索的目录设置PRUNEPATHS

 PRUNEPATHS="/tmp /var/spool /media" 

PRUNEPATHS :以空格分隔的目录路径名列表,不应由updatedb扫描。 每个路径名必须完全采用locate所报告目录的forms。 默认情况下,不会跳过任何路径。

请注意,所有上述配置信息也可以通过命令行选项更改或更新到实用程序updatedb

我找到了你可以尝试的其他东西:

  1. 快速搜索 – “所以我的SearchTool使用不同的方式:它使用’ls’命令列出搜索文件夹的内容,然后对该输出进行搜索。这样搜索速度非常快(除了第一次必须进行搜索’ls’输出)。“

索引不太确定。

  1. 使用工具跟踪器gui
  2. 相当蹩脚的解决方案sudo找到“将你的搜索目录放在这里”> files.list grep’filename’files.list