【问题标题】:Using locate, pipe and grep to find files with certain keywords in their names使用 locate、pipe 和 grep 查找名称中包含某些关键字的文件
【发布时间】:2014-12-12 09:55:47
【问题描述】:

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

如果我想在我的电脑上搜索“计算理论”这本书,

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 这意味着我对这些命令(或管道)中的至少一个的理解是错误的。我哪里看错了?

【问题讨论】:

    标签: linux bash grep pipe locate


    【解决方案1】:

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


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

    我建议您执行以下操作:

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

    • 如果需要,请使用updatedb 重建数据库。

    【讨论】:

    • 感谢您的回答。我按照您的建议检查了 mlocate.db,它似乎昨晚确实运行了。 ls -l 给出:-rw-r----- 1 root slocate 24310079 2014-12-12 03:41 /var/lib/mlocate/mlocate.db。为了确定,我再次运行 updatedb。完成后会更新。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-29
    • 2016-04-27
    • 2021-12-05
    • 2012-07-04
    • 2016-02-03
    相关资源
    最近更新 更多