面向 Linux 新手的 10 个实用的“locate”命令实例
Linux 平台的大多数新用户通常面临的最令人讨厌的经历之一是无法找到在其系统上查找文件的最简单但更有效的手段。
Linux 与几乎所有其他操作系统一样,利用多种机制来回答用户的搜索查询。用户可以使用的两个最流行的文件搜索实用程序是find和location。
现在,值得注意的是,这两种搜索过程都运行得非常好,但尽管如此,本文的重点将更多地放在定位实用程序上,因为它是两者中更方便的一种,因为它使用更有效的方式来快速处理用户输入的查询。
定位实用程序比其对应的查找实用程序更好、更快,因为在启动文件搜索时,定位实用程序不会搜索文件系统(这是查找实用程序所做的工作),而是会查看数据库。此数据库包含文件的片段和部分以及它们在系统上的对应路径。
这里有十个简单的定位命令,可以帮助您提高 Linux 机器的使用效率。
1.使用locate命令
使用locate命令查找文件非常简单直接。您只需输入:
$ locate LAMP-Setup.odt /home/example/LAMP-Setup.odt /home/example/Example.com/LAMP-Setup.odt
2. 将搜索查询限制为特定数量
您可以使用命令将搜索结果限制为所需的数量,以避免搜索结果重复-n
。
例如,如果您只想从查询中获得20 个结果,则可以输入以下命令:
$ locate "*.html" -n 20 /home/example/.config/google-chrome/Default/Extensions/aapocclcgogkmnckokdopfmhonfmgoek/0.9_0/main.html /home/example/.config/google-chrome/Default/Extensions/aohghmighlieiainnegkcijnfilokake/0.9_0/main.html /home/example/.config/google-chrome/Default/Extensions/felcaaldnbdncclmgdcncolpebgiejap/1.1_0/main.html /home/example/.config/google-chrome/Default/Extensions/kbfnbcaeplbcioakkpcpgfkobkghlhen/14.752.848_0/forge.html /home/example/.config/google-chrome/Default/Extensions/kbfnbcaeplbcioakkpcpgfkobkghlhen/14.752.848_0/src/popup.html /home/example/.config/google-chrome/Default/Extensions/nlipoenfbbikpbjkfpfillcgkoblgpmj/3.9.16_0/additional-feature.html /home/example/.config/google-chrome/Default/Extensions/nlipoenfbbikpbjkfpfillcgkoblgpmj/3.9.16_0/background.html /home/example/.config/google-chrome/Default/Extensions/nlipoenfbbikpbjkfpfillcgkoblgpmj/3.9.16_0/edit.html /home/example/.config/google-chrome/Default/Extensions/nlipoenfbbikpbjkfpfillcgkoblgpmj/3.9.16_0/help.html /home/example/.config/google-chrome/Default/Extensions/nlipoenfbbikpbjkfpfillcgkoblgpmj/3.9.16_0/options.html /home/example/.config/google-chrome/Default/Extensions/nlipoenfbbikpbjkfpfillcgkoblgpmj/3.9.16_0/popup.html /home/example/.config/google-chrome/Default/Extensions/nlipoenfbbikpbjkfpfillcgkoblgpmj/3.9.16_0/purchase.html /home/example/.config/google-chrome/Default/Extensions/nlipoenfbbikpbjkfpfillcgkoblgpmj/3.9.16_0/upload.html /home/example/.config/google-chrome/Default/Extensions/nlipoenfbbikpbjkfpfillcgkoblgpmj/3.9.16_0/oauth2/oauth2.html /home/example/.config/google-chrome/Default/Extensions/nmmhkkegccagdldgiimedpiccmgmieda/1.0.0.2_0/html/craw_window.html /home/example/.config/google-chrome/Default/Extensions/pkedcjkdefgpdelpbcmbmeomcjbeemfm/5516.1005.0.3_0/cast_route_details.html /home/example/.config/google-chrome/Default/Extensions/pkedcjkdefgpdelpbcmbmeomcjbeemfm/5516.1005.0.3_0/feedback.html /home/example/.config/google-chrome/Default/Extensions/pkedcjkdefgpdelpbcmbmeomcjbeemfm/5516.1005.0.3_0/cast_setup/devices.html /home/example/.config/google-chrome/Default/Extensions/pkedcjkdefgpdelpbcmbmeomcjbeemfm/5516.1005.0.3_0/cast_setup/index.html /home/example/.config/google-chrome/Default/Extensions/pkedcjkdefgpdelpbcmbmeomcjbeemfm/5516.1005.0.3_0/cast_setup/offers.html
结果将显示前 20 个以 结尾的文件.html
。
3.显示匹配条目的数量
如果要显示文件“ example ”的所有匹配条目的数量,请使用locate -c命令。
$ locate -c [example]* 1550
4. 忽略区分大小写的定位输出
默认情况下,locate配置为以区分大小写的方式处理查询,这意味着TEXT.TXT
将指向与 不同的结果text.txt
。
要让locate命令忽略大小写并显示大写和小写查询的结果,请输入带有-i
选项的命令。
$ locate -i *text.txt* /home/example/TEXT.txt /home/example/text.txt
5.刷新mlocate数据库
由于locate命令依赖于一个名为mlocate的数据库。该数据库需要定期更新,以使命令实用程序
有效运行。
要更新mlocate数据库,请使用名为updatedb的实用程序。需要注意的是,您需要超级用户权限才能正常工作,需要以 root 或 sudo 权限执行。
$ sudo updatedb
6.仅显示系统中存在的文件
当您拥有更新的mlocate数据库**时,locate命令仍然会生成从系统中删除物理副本的文件的结果。
为了避免在输入命令时看到机器中不存在的文件的结果,您需要使用locate-e命令。该过程会搜索您的系统以验证您要查找的文件是否存在,即使它仍存在于您的mlocate.db中。
$ locate -i -e *text.txt* /home/example/text.txt
7. 不带换行符的单独输出条目
定位命令的默认分隔符是换行符(\\n)
。但是,如果您更喜欢使用其他分隔符(例如ASCII NUL ),则可以使用命令行选项来实现-0
。
$ locate -i -0 *text.txt* /home/example/TEXT.txt/home/example/text.txt
8. 检查你的定位数据库
如果您对mlocate.db的当前状态有疑问,您可以使用该-S
命令轻松查看定位数据库统计信息。
$ locate -S Database /var/lib/mlocate/mlocate.db: 32,246 directories 4,18,850 files 2,92,36,692 bytes in file names 1,13,64,319 bytes used to store database
9. 禁止定位中的错误消息
不断尝试访问您的定位数据库有时会产生不必要的错误消息,指出您没有对 mlocate.db 进行 root 访问所需的权限,因为您只是一个普通用户,而不是所需的超级用户。
要彻底消除这些消息,请使用-q
命令。
$ locate "\*.dat" -q*
10. 选择不同的 mlocate 位置
如果您输入查询以寻找默认mlocate数据库中不存在的结果,并希望从位于系统中其他位置的其他mlocate.db获取答案,则可以使用该命令将locate命令指向系统不同部分的其他mlocate-d
数据库。
$ locate -d <new db path> <filename>
看起来, locate命令就像是那些可以毫不费力地完成所有任务的实用程序之一,但事实上,为了保持进程的效率,mlocate.db需要时不时地提供信息。如果不这样做,程序可能会变得毫无用处。