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

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

我在 Linux 上使用该locate命令。我目前的用法是搜索整个文件系统。我只希望它在特定目录中搜​​索。我该怎么做?

答案1

另一种方法是使用模式匹配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*给出相同的结果。

答案2

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

updatedb -U /path/to/directory

并使用以下方式搜索:

locate <search_string>

更新

这在我的 Gentoo 系统上运行良好,但 CentOS 没有包含-U该选项。因此,您可以尝试以下方法:

使用以下方法构建数据库:

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

并搜索:

# locate -d dir_locate.db <search_string>

答案3

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

locate search_term | grep "/specified/directory"

更好的解决方案可能是使用“查找”及其路径选项......

答案4

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

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

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

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

相关内容