查找名称不起作用

查找名称不起作用

有一个文件位于/user/share/jogl.jar

我在用locate jogl.jar

但它不起作用。为什么?

答案1

从手册页中:

   locate  reads  one or more databases prepared by updatedb(8) and writes
   file names matching at least one of the PATTERNs  to  standard  output,
   one per line.

以 root 身份运行updatedb并重试。它应该可以工作。

或者,您可以使用findfind | grep,它不使用数据库(因此速度要慢得多)。

答案2

你说的“它不起作用”是什么意思?如果你不熟悉locate,我想到两个主要问题,都与依赖locate数据库和不是直接在文件系统上。

  1. 它没有显示任何结果:在这种情况下,你可能需要通过从终端locate运行来更新数据库updatedb

  2. 返回的结果太多了:再次locate使用数据库,而不是当前目录(与其他几个常见的 unix 命令相反),因此如果您尝试somestuffhome目录中定位以查找somestuff它可能包含的所有内容,它将不起作用。您必须使用完整路径来运行它:locate ~/*somestuff

答案3

由于某种原因,Ubuntu 没有将我作为用户添加到允许读取默认数据库的组中。解决方案是:

sudo usermod -a -G mlocate YOUR_USER_NAME

该信息是通过阅读man updatedb和检查中的默认数据库的权限了解到的/var/lib/mlocate/mlocate.db

相关内容