当前位置: 首页>>技术教程>>正文


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

, ,

问题描述

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

有没有什么简单的方法可以实现这一点,或者有什么类似的实用程序可以满足我的要求?(注意:它应该维护一个像 mlocate 这样的索引,因此 find 是不可接受的)谢谢。

最佳方法

编辑文件 /etc/updatedb.conf

PRUNEPATHS 设置为您不想搜索的目录

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

PRUNEPATHS :whitespace-separated 不应由 updatedb 扫描的目录路径名列表。每个路径名必须与目录由locate报告的形式完全一致。默认情况下,不会跳过任何路径。

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

次佳方法

您可以使用 -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,如下所示:

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

参考资料

本文由Ubuntu问答整理, 博文地址: https://ubuntuqa.com/article/14623.html,未经允许,请勿转载。