在Linux工作时,最常见的操作之一是搜索文件和目录。在Linux,find
和locate
是你搜索文件最常用的命令。
locate
是按文件目录名称进行搜索的最快,最简单的命令。在本教程中,我们将详解如何在Linux使用locate
命令正则表达式搜索文件。
locate 命令工作方式
locate
命令在updatedb
命令生成的数据库记录搜索指定关键词或者模式。然后将搜索结果打印在终端,每行是一个文件的记录。
安装locate命令时,将会创建一个cron作业,updatedb
命令每24小时运行一次命令。这样可以确保数据库得到定期更新。
你也可以以root或具有sudo权限的用户运行命令sudo updatedb
手动更新数据库记录。要了解cron作业的更多信息,请查看/etc/cron.daily/mlocate
文件。
sudo updatedb
更新过程将花费一些时间,具体取决于文件和目录的数量以及系统的速度。数据库更新之后创建的文件不会在locate
命令搜索结果中出现。
与功能更强大的find
命令搜索相比,locate
运行速度更快,但缺少许多功能,并且只能根据文件目录名称进行搜索。
ocate 命令正则表达式
如果您需要运行更复杂的搜索,可以使用locate
命令的-r
/--regexp
选项,该选项允许您使用基本正则表达式而不是模式进行搜索。
例如命令locate --regex -i "(.mp4|.avi)"
搜索.mp4
和.avi
文件并忽略大小写,-i
选项。
locate --regex -i "(.mp4|.avi)"
locate 命令搜索模式与通配符*
locate
命令的模式可以是通配符*
。当模式不包含通配符时,locate
命令将搜索模式*PATTERN*
。
这就是为什么命令locate .bashrc
打印名称包含.bashrc
的所有文件。当运行命令locate .bashrc
时搜索的模式是*.bashrc*
。
*
通配符是用于表示零个,一个或多个字符的符号。例如命令locate *.md
搜索所有.md
文件。
locate *.md