网站搜索

针对 Linux 新手的 10 个有用的“locate”命令实用示例


大多数 Linux 平台新用户通常面临的最令人讨厌的经历之一是无法找到最简单且更有效的方法来查找系统上的文件。

Linux 与几乎所有其他操作系统一样,利用多种机制来回答用户的搜索查询。用户可以访问的两个最流行的文件搜索实用程序称为查找和定位

现在,需要注意的是,这两个搜索过程都工作得非常好,但尽管如此,本文的中心将更多地放在 locate 实用程序上,这是两个过程中更方便的一个,因为它使用效率更高快速处理用户输入的查询的方法。

locate 实用程序比相应的 find 实用程序工作得更好、更快,因为在启动文件搜索时,locate 不会搜索文件系统(find 会这样做),而是会查找数据库。该数据库包含文件的各个部分及其在系统上的相应路径。

这里有十个简单的定位命令,可帮助您提高 Linux 机器的工作效率。

1. 使用locate命令

触发locate命令来查找文件非常简单明了。您需要做的就是输入:


$ locate LAMP-Setup.odt

/home/tecmint/LAMP-Setup.odt
/home/tecmint/TecMint.com/LAMP-Setup.odt

2. 将搜索查询限制为特定数量

您可以使用 -n 命令将搜索结果限制为所需的数量,以避免搜索结果出现冗余。

例如,如果您只想从查询中获得 20 个结果,则可以键入以下命令:


$ locate "*.html" -n 20

/home/tecmint/.config/google-chrome/Default/Extensions/aapocclcgogkmnckokdopfmhonfmgoek/0.9_0/main.html
/home/tecmint/.config/google-chrome/Default/Extensions/aohghmighlieiainnegkcijnfilokake/0.9_0/main.html
/home/tecmint/.config/google-chrome/Default/Extensions/felcaaldnbdncclmgdcncolpebgiejap/1.1_0/main.html
/home/tecmint/.config/google-chrome/Default/Extensions/kbfnbcaeplbcioakkpcpgfkobkghlhen/14.752.848_0/forge.html
/home/tecmint/.config/google-chrome/Default/Extensions/kbfnbcaeplbcioakkpcpgfkobkghlhen/14.752.848_0/src/popup.html
/home/tecmint/.config/google-chrome/Default/Extensions/nlipoenfbbikpbjkfpfillcgkoblgpmj/3.9.16_0/additional-feature.html
/home/tecmint/.config/google-chrome/Default/Extensions/nlipoenfbbikpbjkfpfillcgkoblgpmj/3.9.16_0/background.html
/home/tecmint/.config/google-chrome/Default/Extensions/nlipoenfbbikpbjkfpfillcgkoblgpmj/3.9.16_0/edit.html
/home/tecmint/.config/google-chrome/Default/Extensions/nlipoenfbbikpbjkfpfillcgkoblgpmj/3.9.16_0/help.html
/home/tecmint/.config/google-chrome/Default/Extensions/nlipoenfbbikpbjkfpfillcgkoblgpmj/3.9.16_0/options.html
/home/tecmint/.config/google-chrome/Default/Extensions/nlipoenfbbikpbjkfpfillcgkoblgpmj/3.9.16_0/popup.html
/home/tecmint/.config/google-chrome/Default/Extensions/nlipoenfbbikpbjkfpfillcgkoblgpmj/3.9.16_0/purchase.html
/home/tecmint/.config/google-chrome/Default/Extensions/nlipoenfbbikpbjkfpfillcgkoblgpmj/3.9.16_0/upload.html
/home/tecmint/.config/google-chrome/Default/Extensions/nlipoenfbbikpbjkfpfillcgkoblgpmj/3.9.16_0/oauth2/oauth2.html
/home/tecmint/.config/google-chrome/Default/Extensions/nmmhkkegccagdldgiimedpiccmgmieda/1.0.0.2_0/html/craw_window.html
/home/tecmint/.config/google-chrome/Default/Extensions/pkedcjkdefgpdelpbcmbmeomcjbeemfm/5516.1005.0.3_0/cast_route_details.html
/home/tecmint/.config/google-chrome/Default/Extensions/pkedcjkdefgpdelpbcmbmeomcjbeemfm/5516.1005.0.3_0/feedback.html
/home/tecmint/.config/google-chrome/Default/Extensions/pkedcjkdefgpdelpbcmbmeomcjbeemfm/5516.1005.0.3_0/cast_setup/devices.html
/home/tecmint/.config/google-chrome/Default/Extensions/pkedcjkdefgpdelpbcmbmeomcjbeemfm/5516.1005.0.3_0/cast_setup/index.html
/home/tecmint/.config/google-chrome/Default/Extensions/pkedcjkdefgpdelpbcmbmeomcjbeemfm/5516.1005.0.3_0/cast_setup/offers.html

结果将显示以 .html 结尾的前 20 个文件。

3. 显示匹配条目数

如果要显示文件“howtoing”的所有匹配条目的计数,请使用locate -c命令。


$ locate -c [tecmint]*

1550

4. 忽略区分大小写的定位输出

默认情况下,locate 配置为以区分大小写的方式处理查询,这意味着 TEXT.TXT 将为您指向与 text.txt 不同的结果。

要让 locate 命令忽略大小写并显示大写和小写查询的结果,请使用 -i 选项输入命令。


$ locate -i *text.txt*

/home/tecmint/TEXT.txt
/home/tecmint/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/tecmint/text.txt

7. 不换行的情况下分离输出条目

locate 命令的默认分隔符是换行符 (\\n) 。但如果您更喜欢使用不同的分隔符(例如 ASCII NUL),则可以使用 -0 命令行选项来实现。


$ locate -i -0 *text.txt*

/home/tecmint/TEXT.txt/home/tecmint/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. 抑制 Locate 中的错误消息

不断尝试访问您的locate数据库有时会产生不必要的错误消息,指出您没有对mlocate.db进行根访问所需的权限,因为您只是普通用户,而不是需要超级用户。

要完全消除这些消息,请使用 -q 命令。


locate "\*.dat" -q*

10. 选择不同的 mlocate 位置

如果您输入的查询查找默认 mlocate 数据库中不存在的结果,并且希望从位于系统其他位置的不同 mlocate.db 中获得答案,您可以指向使用-d命令将locate命令定位到系统不同部分的不同mlocate数据库。


locate -d <new db path> <filename>

locate 命令可能看起来像是那些实用程序之一,它可以毫不费力地完成您要求它做的所有事情,但事实上,为了使该过程保持其效率,mlocate.db 需要时不时地获取信息。如果不这样做可能会使程序变得毫无用处。