我不是这两个命令中的任何一个的专家用户,但根据我的理解,
如果我想搜索"计算理论"在我的电脑上预订,
locate -i computation | grep -i theory
应该为我提供名称中同时包含theroy
和computation
的所有文件。
locate -i computation
应输出名称中包含computation
的所有文件,并且从该列表中输出,由于管道,grep -i theory
应输出名称中包含theory
的所有文件,从而给我我想要的输出。
但是,当我运行上面的命令时,我得到像
这样的输出 /root/books/History theory and practice of the electric telegraph.pdf
这意味着我对这些命令(或管道)中的至少一个的理解是错误的。我错在哪里?
答案 0 :(得分:1)
我看不到您正在使用的命令有什么问题。 (而且他们为我工作......但显然这并不能解释你的情况。)
您所看到的一个可能原因是mlocate.db
文件已过时或损坏。该文件应该由cron
每天更新。但是,如果您每晚都习惯性地关闭机器,那么它可能只是偶尔运行。此可能会导致报告错误的匹配。另一种可能性是,自上次重建数据库以来,您对文件系统进行了大量更改。
我建议您执行以下操作:
检查/var/lib/mlocate/mlocate.db
文件上的时间戳,看它是否过时
如果有保证,请使用updatedb
重建数据库。