Linux 文件查找:find 与 locate 实战

举报
yd_236639601 发表于 2026/11/10 01:55:23 2026/11/10
【摘要】 Linux 文件查找:find 与 locate 实战文件越攒越多,找东西就成了体力活:在哪个目录、上周改过的那个脚本叫什么、谁把磁盘写满了。find 和 locate 是 Linux 里最常用的两个找文件工具,一个实时查、一个查索引,各有适用场景。 一、locate:查索引,秒出结果locate 查的是预先建好的文件名数据库,速度极快:locate nginx.conflocate -i...

Linux 文件查找:find 与 locate 实战

文件越攒越多,找东西就成了体力活:在哪个目录、上周改过的那个脚本叫什么、谁把磁盘写满了。find 和 locate 是 Linux 里最常用的两个找文件工具,一个实时查、一个查索引,各有适用场景。

一、locate:查索引,秒出结果

locate 查的是预先建好的文件名数据库,速度极快:

locate nginx.conf
locate -i readme        # -i 忽略大小写
locate -c "*.log"       # 只统计数量,不列明细

数据库默认每天更新一次,所以刚生成的文件可能查不到。手动更新:

sudo updatedb

注意:很多精简系统默认没装 locate,包名一般是 mlocate 或 plocate,sudo apt install plocate 即可。

二、find:实时遍历,条件最全

find 是实时在目录树里找,慢一点,但条件组合最丰富。最基本的形式:

find /var/log -name "*.log"          # 按名字找
find . -iname "*.JPG"                # 名字忽略大小写
find / -type d -name "backup"        # 只找目录(f 是普通文件,l 是软链接)

按时间找特别实用:

find . -mtime -1        # 24 小时内改过的文件
find /tmp -mtime +30    # 30 天前改过的,适合清理

按大小找,大文件排查必备:

find / -size +500M 2>/dev/null

2>/dev/null 把“无权限”的报错丢掉,输出干净很多。

三、找到之后直接处理:-exec

find 的强项是找到文件后顺手处理:

# 找出 30 天前的日志并删除(先不带 -delete 跑一遍确认列表!)
find /var/log -name "*.log" -mtime +30

# 确认无误再删
find /var/log -name "*.log" -mtime +30 -delete

# 批量改权限:目录 755、文件 644
find /var/www -type d -exec chmod 755 {} \;
find /var/www -type f -exec chmod 644 {} \;

批量操作文件多时,-exec ... + 比 \; 快得多(一次调用处理多个文件):

find . -name "*.tmp" -exec rm -f {} +

删除类操作先 dry-run 看列表再执行,这是避免误删的铁律。

四、两个工具怎么选

  • 知道大概文件名、要快:locate,但记得它查的是昨天的索引。
  • 要按时间、大小、类型等条件筛,或者找到后要批量处理:find。
  • 在大目录上跑 find / 会慢,尽量缩小范围到具体目录,并加上 -maxdepth 限制层数,比如 find /var -maxdepth 2 -name "*.conf"。

小结

locate 靠索引胜在快,find 靠实时遍历胜在准和能联动处理。日常先 locate 探路、找不到再上 find 精确筛,是最省时间的组合。再记住一条:find 配 -delete 或 -exec rm 之前,永远先把同样的条件不带删除跑一遍,确认列表再动手。

【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0)

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。