精准快速定位的locate
.. note::
众里寻他千百度,蓦然回首,那人却在灯火阑珊处
-李煜
Linux locate
命令用于查找符合条件的文档、程序、目录等等。这个命令会在数据库中查找符合条件的各种信息。
一般情况我们只需要输入 locate name
即可查找。
官方定义为:
locate
- list files in databases that match a pattern
使用方法为:
1 2 3 4
| $ locate [-d path | --database=path] [-e | -E | --[non-]existing] [-i | --ignore-case] [-0 | --null] [-c | --count] [-w | --wholename] [-b | --basename] [-l N | --limit=N] [-S | --statistics] [-r | --regex ] [--regex‐ type R] [--max-database-age D] [-P | -H | --nofollow] [-L | --follow] [--version] [-A | --all] [-p | --print] [--help] pattern...
|
看着很复杂,不过常用的参数倒是不多,基本为:
-n
: 至多显示 n个输出。
-i, --ignore-case
: 忽略大小写
默认无参数
默认情况下,locate
直接跟上需要查找的信息就可以了,如下所示:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
| $ locate set_vis.cpp /home/user/mycode/src/set_vis.cpp
$ locate apropos /usr/bin/apropos /usr/local/difmap/help/apropos.hlp /usr/share/emacs/24.3/lisp/apropos.elc /usr/share/man/de/man1/apropos.1.gz /usr/share/man/es/man1/apropos.1.gz /usr/share/man/fr/man1/apropos.1.gz /usr/share/man/id/man1/apropos.1.gz /usr/share/man/it/man1/apropos.1.gz /usr/share/man/ja/man1/apropos.1.gz /usr/share/man/man1/apropos.1.gz /usr/share/man/nl/man1/apropos.1.gz /usr/share/man/pl/man1/apropos.1.gz /usr/share/man/ru/man1/apropos.1.gz
|
太多需要简单化
如果输出的信息很多,仅仅希望看到前面的几个,使用-n
参数既可
1 2 3 4 5
| $ locate -n 3 apropos /usr/bin/apropos /usr/local/difmap/help/apropos.hlp /usr/share/emacs/24.3/lisp/apropos.elc
|
不区分大小写
部分情况下,可能有大小写混淆的情况,此时使用-i
参数既可
1 2 3
| $ $ locate -i set_vis.cpp /home/user/mycode/src/set_vis.cpp /home/user/mycode_CPP/src/set_VIS.cpp
|
📖 说明
不过刚按照的系统,这个命令并不一定有输出,主要是因为locate
与 find
不同, find
直接在硬盘找,而locate
只在数据库中查找。
这个数据库在CentOS系统默认的为 /var/lib/mlocate/mlocate.db 中,所以 locate
的查找会比较快,但并一定是实时的,而是以数据库的更新为准。
可以通过下面的命令手工升级数据库 ,命令为:
然后就可以使用了。