虽然文件位于终端,但Linux中不存在该文件


0

我对unix / linux环境有点新意,但我遇到了一个小问题。

我正在使用“locate”来查找我需要的文件的路径,它为我提供了路径,但该路径中不存在该文件,如下所示:

找到test1.txt

/home/user/test files/text1.txt
/home/user/test1.txt~

“test files”目录是我保存文件的地方,我将它复制到主目录一次,但我删除了它,不知道它一直告诉我还有一个tmp文件。

值得一提的是我使用了命令:

locate test1.txt~ |xargs -n1 rm

删除该tmp文件,但也许是导致问题的原因。我试图显示隐藏文件,并检查临时文件,也没有找到它。

发生了什么事?


6
locate 使用仅定期更新的数据库(例如每24小时),因此数据库和现实很可能不同步。
Paul R

为了获得更好的效果,请使 find 代替 locate (个人意见警告 - locate 是一些误入歧途的结果“我们需要以与微软一样的方式做事”。

@twalberg locate 从1983年开始。这是第一个Windows版本发布前两年。
terdon

Answers:


3

您可以使用更新数据库 sudo updatedb 然后尝试运行 locate 再次获得正确的输出。

这是因为db会定期更新并使用该命令 sudo updatedb 将强制数据库在此刻获得更新。


0

Locate命令不会搜索整个文件系统。 它从db文件中获取。它可能是/var/lib/mlocate.db或其他一些db文件。 如果您希望'locate'命令提供更新的信息,请先运行命令'updatedb' 运行'locate'。

这个updatedb可以根据方便性每天或每周添加到cron中。 但有一个问题是updetedb命令需要一点时间来更新数据库。 所以最好使用find命令。同时find命令对整个文件系统也不好。如果您事先知道某个目录中可能存在相应的文件,那么您只能使用find命令在该目录中进行搜索。

防爆。找到some_directory_name -name file_name。

有关更多信息,请参阅相应的手册页。 快乐的Linuxing ...

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.