使用locate,pipe和grep查找名称中包含特定关键字的文件

时间:2014-12-12 09:55:47

标签: linux bash grep pipe locate

我不是这两个命令中的任何一个的专家用户,但根据我的理解,

如果我想搜索"计算理论"在我的电脑上预订,

locate -i computation | grep -i theory应该为我提供名称中同时包含theroycomputation的所有文件。

locate -i computation应输出名称中包含computation的所有文件,并且从该列表中输出,由于管道,grep -i theory应输出名称中包含theory的所有文件,从而给我我想要的输出。

但是,当我运行上面的命令时,我得到像

这样的输出

/root/books/History theory and practice of the electric telegraph.pdf这意味着我对这些命令(或管道)中的至少一个的理解是错误的。我错在哪里?

1 个答案:

答案 0 :(得分:1)

我看不到您正在使用的命令有什么问题。 (而且他们为我工作......但显然这并不能解释你的情况。)


您所看到的一个可能原因是mlocate.db文件已过时或损坏。该文件应该由cron每天更新。但是,如果您每晚都习惯性地关闭机器,那么它可能只是偶尔运行。此可能会导致报告错误的匹配。另一种可能性是,自上次重建数据库以来,您对文件系统进行了大量更改。

我建议您执行以下操作:

  • 检查/var/lib/mlocate/mlocate.db文件上的时间戳,看它是否过时

  • 如果有保证,请使用updatedb重建数据库。