如何在指定的目录中使用locate命令?

我在Linux上使用locate命令。 我目前使用它search整个文件系统。 我只希望它在一个特定的目录内search。 我该怎么做?

另一种方法是在locate使用模式匹配:

 locate '/some/directory/*filename*' 

比较以下命令的输出:

 $ locate tmpfile /usr/lib64/perl5/auto/POSIX/tmpfile.al /usr/share/man/fr/man3/tmpfile.3.gz /usr/share/man/ja/man3/tmpfile.3.gz /usr/share/man/man3/tmpfile.3.gz /usr/share/man/man3p/tmpfile.3p.gz $ $ locate '/usr/lib64/*tmpfile*' /usr/lib64/perl5/auto/POSIX/tmpfile.al $ 

locate /usr/lib*tmpfile*给出相同的结果。

使用以下命令为您的特定目录创buildslocate数据库:

 updatedb -U /path/to/directory 

并用以下search:

 locate <search_string> 

UPDATE

这在我的Gentoo系统上工作正常,但CentOS不包括-U选项。 所以,你可以尝试下面的代码:

build立数据库:

 # updatedb -U /path/to/dir -o dir_locate.db 

并search:

 # locate -d dir_locate.db <search_string> 

我能想到的最简单的答案是

 locate search_term | grep "/specified/directory" 

更好的解决scheme可能是使用“查找”及其path选项…

最简单的方法如下例所示:

 updatedb -o ~/tmp.db -l0 -U $PWD locate -d ~/tmp.db "foo" 

$PWD更改为您的特定目录。

上面的例子将只为特定的目录创build本地数据库。