我已经写了:
locate Origin90SR2DVD.iso
Run Code Online (Sandbox Code Playgroud)
我收到了该文件所在的路径:
/home/david/Origin90SR2DVD.iso
Run Code Online (Sandbox Code Playgroud)
然后我写了:
cd /home/david
Run Code Online (Sandbox Code Playgroud)
我跑了:
ls -lrth
Run Code Online (Sandbox Code Playgroud)
我找不到Origin90SR2DVD.iso文件。
为什么文件不在该路径中?
有可能是您Origin90SR2DVD.iso在上次(或您自己)更新( )/home/david的数据库文件时所在的位置拥有该文件。至于搜索时数据库文件中的文件名(这就是为什么它很快),您可以认为它是技术 not live。locate/var/lib/mlocate/mlocate.dbcronlocate
尽管locate显示了文件的位置,但该文件很可能不存在(可能已删除或移动到其他地方)。
您有两种方法可以确定发生了什么:
您可以更新locate数据库文件sudo updatedb,然后运行相同的locate命令。
或者,您可以使用find进行实时搜索。要在您的主目录中递归查找文件:
find ~ -type f -iname 'Origin90SR2DVD.iso' -print -o -path ~/.gvfs -prune
Run Code Online (Sandbox Code Playgroud)
-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'
Run Code Online (Sandbox Code Playgroud)编辑 :
locate的数据库cron每天更新。在我的系统中,它每天早上 6 点 25 分运行(检查您的/etc/crontab)。
实际上anacron会运行该cron作业,以确保如果当时计算机处于关闭状态,则下次打开计算机后会运行该作业。如果anacron不可用,run-parts将仅在提到的时间执行目录中的文件(包括mlocate)/etc/cron.daily。