用 find 快速定位文件:按名字、时间和大小

举报
yd_28502004 发表于 2026/11/01 06:21:15 2026/11/01
【摘要】 服务器上文件一多,靠眼睛翻目录就不现实了。find 是 Linux 自带的定位工具:它从指定目录出发,按你给的条件一层层往下找,名字、时间、大小都能当条件,组合起来用,排查问题会快很多。一、按名字找:先缩小范围。最常用的是按名字找。find /var/log -name “.log" 会在 /var/log 下面找出所有以 .log 结尾的文件。名字里有大写、大小写不确定时,把 -name ...

服务器上文件一多,靠眼睛翻目录就不现实了。find 是 Linux 自带的定位工具:它从指定目录出发,按你给的条件一层层往下找,名字、时间、大小都能当条件,组合起来用,排查问题会快很多。
一、按名字找:先缩小范围。最常用的是按名字找。find /var/log -name “.log" 会在 /var/log 下面找出所有以 .log 结尾的文件。名字里有大写、大小写不确定时,把 -name 换成 -iname,它会忽略大小写,find . -iname “readme” 就能把 README、Readme 一起找出来。只想找目录或只想找普通文件,可以再加一个类型条件:-type d 是目录,-type f 是普通文件。比如 find /etc -type f -name ".conf”,只返回配置文件,不会被同名目录干扰。
二、按时间找:锁定最近动过的文件。出问题后,第一步往往是问“最近改过什么”。-mtime -1 表示 1 天内修改过的文件,-mtime +7 表示 7 天前修改的。find /opt -mtime -1 -type f 能快速列出昨天以来动过的文件,配合报错时间,基本能圈定嫌疑范围。注意 mtime 是“内容被修改”的时间,不是创建时间。如果是想找最近被访问过的文件,用 -atime;想找权限、属主等属性被改过的,用 -ctime。三个时间容易混,排查时先确认自己要的是哪一种。
三、按大小找:揪出占空间的大文件。磁盘告警时,按大小找最直接。find / -size +100M -type f 会找出大于 100M 的文件,单位可以换成 k、G。找到之后别急着删,先用 du -h 确认它属于哪个服务、能不能删,日志文件尤其要先确认有没有在被写入。
四、组合条件:一次问对问题。find 的条件默认是“且”的关系,可以直接叠加:find /var -type f -name “*.log” -mtime -3 -size +10M,意思是 /var 下面、3 天内改过、大于 10M 的日志文件。条件越具体,结果越少,越接近答案。如果目录里有不想进的子目录,比如备份目录或挂载点,用 -prune 排除它,或者先用 -maxdepth 2 限制只往下找两层,避免在海量文件里跑太久。
五、两个常见坑。一是权限不足:扫系统目录时会出现 Permission denied,这不一定是错误,只是当前用户读不到那个目录,换有权限的用户或用 sudo 再跑一次即可。二是忘记加起始目录:find 不加路径默认从当前目录找,在根目录下全盘扫会很慢,先想清楚从哪里开始找。记住一个顺序就够了:先定范围(从哪个目录找),再定条件(名字、时间还是大小),最后看结果做判断。find 本身不改文件,只负责找,把“找”和“删”分开,操作就安全多了。

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

评论(0)

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

全部回复

上滑加载中

设置昵称

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

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

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