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


23

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

有没有简单的方法可以实现此目的,或者有任何类似的实用工具可以满足我的需求?(注意:例如mlocate,它应该维护一个索引,因此find是不可接受的)。谢谢。

Answers:


16

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

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

-o写入输出文件

-l 0使您可以阅读它,否则只能通过定位访问它

然后,您可以像下面这样使用它:

locate -d /home/user/databasefile Dylan

-d设置数据库路径

要将mlocate与一个以上的根目录一起使用,只需创建两个databasefile,然后将find与两个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

赞成,因为这是部分答案。但是,它仅允许将一条路径列入白名单。我的问题特别是关于如何将一条以上的路径列入白名单。
Andrew Ferrier 2013年

1
改善了答案,为了更易于处理,我建议创建一个别名
Janghou

好答案!感谢您的澄清,我没有意识到您可以在两个数据库中并行搜索。除非有更好的答案,否则我将标记为已接受!
安德鲁·费里尔

updatedb -l 0 -U /home/user/music递归的吗?就我而言,这似乎不是
Gaia

22

编辑档案 /etc/updatedb.conf

设置PRUNEPATHS您不想搜索的目录

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

PRUNEPATHS:目录的路径名的空格分隔列表,updateb不应扫描这些目录。每个路径名都必须完全按照locate报告目录的格式。默认情况下,不跳过任何路径。

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


不,那与我想要的完全相反。这将索引除那些目录之外的所有内容。
安德鲁·费里耶

您可以为目录以外的所有内容设置PRUNEPATHS。这样,它将仅扫描您的目录。
LnxSlck

好的,谢谢您的澄清说明。这有点不切实际,因为当我在要索引的目录旁边添加子目录时,我必须记住将它们添加到PRUNEPATHS中。但是,它将起作用。谢谢你的建议。
安德鲁·费里尔

是的,我知道,但是我找不到关于mlocate的太多信息。您不能使用诸如find之类的东西吗?
LnxSlck

不,我有很多数据,因此对它进行索引很重要。已经澄清了问题。
安德鲁·费里尔

1

我发现了您可以尝试的其他方法:

  1. 快速搜索 -“因此,我的SearchTool使用另一种方式:它使用'ls'命令列出搜索到的文件夹的内容,然后在该输出上进行搜索。这种方式的搜索速度非常快(除了第一次必须进行'ls'输出)。”

对索引不是很确定。

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

尽量不要添加多个答案。如有必要,请编辑现有答案并包括更多信息。谢谢。
jokerdino

是的,我会这样做
LnxSlck 2012年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.