updateb 可以保留未插入的可移动驱动器的本地路径吗?

updateb 可以保留未插入的可移动驱动器的本地路径吗?

我像这样运行updatedb:updatedb --localpaths="/a /b"

/a是一个可移动驱动器。/b是本地硬盘。虽然/a我并不总是可以访问,但我经常想运行locate以查找其中是否有某个文件(基于我上次运行的时间updatedb)。

问题是,如果我updatedb在未插入时运行,则会收到错误:

/usr/bin/find: '/a': No such file or directory

数据库获取有关 的最新信息/b,但删除了/a的现有数据。有没有办法在未插入电源/a时保留数据?/aupdatedb

我认为这对于多个数据库来说是可能的,一个用于,/a另一个用于/b.然后,脚本可以/a在决定是否插入时检查是否已插入updatedb

但这两个命令的手册页都假设我知道的比我知道的多得多(例如,FINDOPTIONS做什么),所以我希望有一个更简单的解决方案来解决这个问题。

答案1

我不了解 Windows 上的 Linux,也不了解 GNU 版本locate,但你应该能够做你想做的事情。有更长版本的手册这里

用 2 个命令替换你的单个updatedb --localpaths="/a /b"命令,

updatedb --localpaths="/b"
if [ -d "/a" ]; then updatedb --localpaths="/a" --output=/dir/mydb; fi

其中/dir/mydb是要保存数据库的文件的完整路径名。

当您进行定位时,将环境变量设置LOCATE_PATH/dir/mydb::。原则上::应该意味着使用标准数据库。

如果::不起作用,您可以通过运行来获取标准数据库的文件名updatedb --help。例如,它可能会说默认值为/usr/local/var/locatedb.然后就可以设置了LOCATE_PATH=/dir/mydb:/usr/local/var/locatedb。您还可以使用该-d选项来locate提供此数据库列表。

相关内容