Linux 文件查找:find 与 locate 一次讲清

举报
yd_283162409 发表于 2026/11/09 07:48:16 2026/11/09
【摘要】 文件找不到了怎么办Linux 里找文件主要有两个工具:find 和 locate。一个现找、一个查索引,速度和准确性正好互补。find:现找,慢但准find 直接遍历目录树,所以结果永远是最新的,代价是慢,尤其在根目录下全盘搜。基本用法是 find 路径 条件:find /home -name "*.log" 找 home 下所有 log 文件;find /var -type f -size...

文件找不到了怎么办

Linux 里找文件主要有两个工具:find 和 locate。一个现找、一个查索引,速度和准确性正好互补。

find:现找,慢但准

find 直接遍历目录树,所以结果永远是最新的,代价是慢,尤其在根目录下全盘搜。基本用法是 find 路径 条件:find /home -name "*.log" 找 home 下所有 log 文件;find /var -type f -size +100M 找 var 下大于 100M 的文件;find . -mtime -7 找 7 天内改过的。

find 的条件可以组合:-name 按名字(支持通配符),-type f 只找文件、-type d 只找目录,-size 按大小,-mtime 按修改时间,-user 按属主。多个条件默认是“且”,加 -o 是“或”。找到后想直接处理,加 -exec:find /tmp -name "*.tmp" -exec rm {} \; 会逐个删除,操作前最好先不带 -exec 看一遍结果。

locate:查索引,快但可能旧

locate 不遍历磁盘,查的是系统定期建立的文件名数据库,所以毫秒级出结果。用法简单:locate nginx.conf。缺点是数据库靠 updatedb 定期更新,刚新建的文件可能查不到,刚删的文件还可能出现。刚装完软件 locate 不到,先跑一次 sudo updatedb 手动更新数据库。

怎么选

只知道文件名、大致记得在哪,直接 locate,秒出结果;locate 找不到或要按大小、时间、类型精细筛选,用 find;要在结果上批量操作,用 find 的 -exec。日常还有个顺手组合:先 locate 缩小范围,再 find 精确查。两个都熟了,找文件基本不用再翻目录。

常用命令

按名找:find /etc -name "*.conf";按大小找大文件:find / -type f -size +500M 2>/dev/null(2>/dev/null 是把无权限的报错藏起来);按时间找:find . -mtime -1;快速定位:locate sshd_config;更新索引:sudo updatedb。

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

评论(0)

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

全部回复

上滑加载中

设置昵称

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

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

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