无法使用“locate”找到目录?

无法使用“locate”找到目录?

我想使用“locate”命令在我的系统中定位一个目录。我知道有一个名为“bench-repo”的目录。当我给出以下命令时,它显示以下错误:

locate: can not stat () `/var/lib/mlocate/mlocate.db': No such file or directory

为什么会发生这种情况?我如何找到该目录?

答案1

locate( )使用的二进制数据库/var/lib/mlocate/mlocate.db每天由 更新一次cron,因此locate不会找到新文件。

您可以通过先运行来修复此问题sudo updatedb

sudo updatedb && locate -e bench-repo

使用该-e标志是一个好主意,这样您只能找到仍然存在的文件。

哦,这里还有一个额外提示——你可以locate通过将以下内容传递给ls -l

ls -l $(locate -e bench-repo)

答案2

两个原因两个行动

一般来说,当您无法locate归档或因为最近创建(上次数据库更新后)或因为它不在路径中其中 updatedb 将搜索其条目或匹配某些修剪规则(见下文):

  1. 如果是新文件或目录,如果你有足够的特权,你可以强制更新

    sudo updatedb 
    

    这将更新全部和唯一存在于允许的路径中且未被丢弃的文件和目录(情况 2)。

  2. 如果该文件是扫描路径之外由 updatedb,或匹配一些排除规则您可以修改配置文件并更新数据库:

    sudo pico /etc/updatedb.conf  # manual update
    sudo updatedb
    

    实际上,你可以在配置文件中找到被修剪的文件/目录的键/etc/updatedb.conf。搜索PRUNENAMESPRUNEPATHSPRUNEFS进行修改,然后再次更新数据库。

关于locate和的一些话updatedb

为了能够访问locate文件或目录,它必须实际包含在您的重新定位数据库,通常存储在 中/var/lib/mlocate/mlocate.db

此数据库定期更新。默认情况下,它每天更新一次,您可以cron在 中看到它的文件/etc/cron.daily/mlocate。如果不存在,您可以使用 搜索它locate mlocate | grep cron并查看它的位置以及更新频率。

使用man locateman updatedb进行进一步阅读。

答案3

跑步

sudo updatedb

定位之前。这将更新数据库。

相关内容