location 命令找到文件的路径,但该文件在该路径中不存在

location 命令找到文件的路径,但该文件在该路径中不存在

我已经写了:

locate Origin90SR2DVD.iso

我收到了该文件所在的路径:

/home/david/Origin90SR2DVD.iso

然后我写道:

cd /home/david

我跑了:

ls -lrth

我找不到该Origin90SR2DVD.iso文件。

为什么文件不在该路径下?

答案1

您可能在上次(或您自己)更新( )的数据库文件时将Origin90SR2DVD.iso文件放在该位置。至于在搜索时仅针对数据库文件中的文件名(这就是它快速的原因),您可以考虑它的技术而不是/home/davidlocate/var/lib/mlocate/mlocate.dbcronlocate居住

虽然locate显示了文件的位置,但文件很可能并不存在于那里(可能已被删除或移动到其他地方)。

有两种方法可以确定发生了什么:

  • 您可以通过然后运行相同的命令来更新locate数据库文件。sudo updatedblocate

  • 或者,你可以find使用居住搜索。要以递归方式查找主目录中的文件:

    find ~ -type f -iname 'Origin90SR2DVD.iso' -print -o -path ~/.gvfs -prune
    

    -path ~/.gvfs -prune(感谢 Eliah Kagan)用于避免我们~/.gvfs在搜索时进入目录。否则,我们将收到一条令人分心的权限被拒绝消息,因为该目录归 root 所有。您可以通过删除 来忽略此消息(并查看消息)-print -o -path ~/.gvfs -prune

    您还可以在文件系统层次结构中查找所有可能的位置。这里我考虑了几个可以包含该文件的位置,如果您的文件出现在任何其他目录下,那就很不寻常了。

    sudo find /home /root /opt /usr/local /mnt -type f -iname 'Origin90SR2DVD.iso'
    

编辑 :

locate的数据库cron每天由 更新。在我的系统中,它每天早上 6:25 运行(请在 上查看您的数据库/etc/crontab)。

实际上anacron将运行该cron作业以确保如果当时计算机处于关闭状态,则该作业将在下次计算机打开后运行。如果anacron不可用,则将仅在所述时间run-parts执行目录中的文件(包括mlocate) 。/etc/cron.daily

答案2

运行sudo updatedb以确保你的 mlocate 数据库是最新的。

相关内容