Answers:
另一种方法是在中使用模式匹配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* 给出相同的结果。
$ locate '/usr/lib64/*tmpfile'将不返回任何结果。
locate通过管道传递的结果grep。
使用以下命令为您的特定目录创建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>
updatedb: can not change group of file 'db.db.kHhzFz' to 'mlocate': Operation not permitted,请检查如何在linux上以普通用户身份使用updatedb命令。
locate在指定目录中进行搜索的终端别名:alias my_locate="updatedb -U /path/to/yourdir -o /path/to/your_dir_locate.db; locate -d /path/to/dir_locate.db "别名生效后,在终端类型上my_locate *foo*,您便可以参加比赛。您可以使用冒号字符连接数据库来连接数据库更新并定位搜索。rtfm:linux.die.net/man/8/updatedb