头图

简介

locate 命令用于通过查询预构建的数据库来快速搜索文件和目录,该数据库包含来自文件系统的索引文件路径。它比 find 之类的命令要快得多,因为它不会实时搜索整个文件系统。

关键概念

  • locate 命令依赖于数据库,通常位于 /var/lib/mlocate/mlocate.db,数据库文件会定期通过后台进程任务更新。
  • 因为数据库更新不是实时的,最新创建的文件可能不会被查询到,直到下次数据库更新。

安装

# Debian/Ubuntu
sudo apt update
sudo apt install mlocate

# CentOS/RHEL/Fedora
sudo yum install mlocate
sudo updatedb  # 初始化数据库

示例用法

搜索指定的文件

locate [filename]

locate example.txt

搜索部分匹配项

locate [example]

# 示例输出如下:
# /home/user/documents/example.txt
# /home/user/example_folder

搜索时不区分大小写

locate -i [Example]

显示输出的结果条数

locate -n 5 filename

配合 grep 使用

locate [filename] | grep '/home/user'

搜索实际的文件系统,不通过数据库

locate -e filename

更新本地数据库

sudo updatedb

从数据库中排除目录

修改 /etc/updatedb.conf 文件,添加如下示例行:

PRUNEPATHS="/tmp /var/tmp /var/cache"

统计匹配到的结果数

locate [filename] | wc -l

locate -c [filename]

查找以指定后缀结尾的文件

locate *.log

查找最近修改的文件

sudo updatedb

locate [example] | grep "$(date +%Y-%m-%d)"

结合正则表达式使用

locate --regex -i "(\.mp4|\.avi)"

唐青枫
12 声望2 粉丝