如何将特定目录添加到“updatedb”(定位)搜索路径?

ion*_*onh 8 linux locate updatedb

我将我的数字音乐和数字照片保存在 Windows 分区的目录中,安装在/media/win_c我的双引导盒上。我想在locate数据库中包含这些目录——但只包含那些目录。但是,据我所知,updatedb.conf仅提供排除目录的选项,而不是添加目录。当然,我可以删除/mediafrom PRUNEPATHS,然后添加一大堆子目录 ( /media/win_c/Drivers, /media/win_c/ProgramData...) 但这似乎是一种非常笨拙的方法 - 当然有更优雅的解决方案吗?

(我尝试只从索引的 linux 分区创建到 Windows 目录的软链接,但这似乎没有帮助。)

vin*_*c17 5

通过“mlocate”实现,使用该--database-root选项,而不删除任何内容。在 updatedb(8) 手册页中:

-U, --database-root PATH
    Store only results of scanning the file system subtree rooted at
    PATH  to  the  generated  database.   The  whole  file system is
    scanned by default.
Run Code Online (Sandbox Code Playgroud)

但您可能还需要使用单独的输出文件 ( --output)。我不确定您是否可以合并两个数据库(您可以尝试)。

其他实现可能具有类似的选项。


Gil*_*il' 5

中没有这个选项updatedb.conf。您必须安排updatedb手动传递选项。

使用GNU findutils 的 updatedb,通过--localpaths.

updatedb --localpaths '/ /media/win_c/somewhere/Music /media/win_c/somewhere/Photos'
Run Code Online (Sandbox Code Playgroud)

使用mlocate 中的 updatedb,似乎没有一种方法可以指定多个根或从修剪中排除目录,所以我认为您只能为每个目录使用一个数据库。将环境变量设置LOCATE_PATH为数据库列表:

updatedb --output ~/.media.mlocate.db --database-root /media/win_c/somewhere --prunepaths '/media/win_c/somewhere/Videos'

export LOCATE_PATH="$LOCATE_PATH:$HOME/.media.mlocate.db"
Run Code Online (Sandbox Code Playgroud)