我在 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
为您的特定目录。
上面的例子将仅为特定目录创建本地数据库。