别再一个个找文件:find 的四个日常用法

举报
yiboyun 发表于 2026/11/10 07:27:05 2026/11/10
【摘要】 磁盘快满了不知道谁占的、配置文件不知道放哪了、日志文件太多不知道哪个是今天的,这些问题在服务器上几乎每天都会遇到。find 是 Linux 自带的查找工具,按名字、时间、大小、类型都能找,学会四个用法,找文件不用再一个目录一个目录翻。 1. 按名字找:先定位,再动手最常用的是按名字找文件。想在 /etc 下面找名字里带 nginx 的配置文件:find /etc -name "*nginx*...

磁盘快满了不知道谁占的、配置文件不知道放哪了、日志文件太多不知道哪个是今天的,这些问题在服务器上几乎每天都会遇到。find 是 Linux 自带的查找工具,按名字、时间、大小、类型都能找,学会四个用法,找文件不用再一个目录一个目录翻。

1. 按名字找:先定位,再动手

最常用的是按名字找文件。想在 /etc 下面找名字里带 nginx 的配置文件:

find /etc -name "*nginx*"

* 是通配符,匹配任意字符。想找某个具体文件,比如 myapp.conf:

find / -name "myapp.conf" 2>/dev/null

后面的 2>/dev/null 是把“没有权限”的报错丢掉,屏幕上只剩真正的结果,找起来清爽得多。

2. 按时间找:只看最近改过的

出了问题先看最近改过什么文件,这个思路用 find 很好实现。找 /var/log 下面 24 小时内改过的文件:

find /var/log -mtime -1

-mtime -1 表示 1 天以内,-mtime +7 表示 7 天以前。配合 -name "*.log" 还能只看日志:

find /var/log -name "*.log" -mtime -1

排查“昨天还好好的,今天突然不行了”这类问题时,先把最近一天改过的文件列出来,往往一眼就能看到嫌疑对象。

3. 按大小找:磁盘满了先找大文件

磁盘快满的时候,别急着删日志,先看看是谁占的地方最大。找根目录下大于 100M 的文件:

find / -type f -size +100M 2>/dev/null

-type f 只找普通文件,-size +100M 表示大于 100 兆。想按大小排序看,可以交给 du 和 sort:

find /var -type f -size +10M -exec du -h {} \; 2>/dev/null | sort -rh | head -10

这条列出 /var 下面最大的 10 个文件,删之前先确认是不是能删的,别把数据库文件顺手清了。

4. 找到就处理:别手动一个个敲

找到文件之后常常还要批量处理,比如把一周前的旧日志删掉。find 的 -exec 可以直接对找到的每个文件执行命令:

find /var/log -name "*.log" -mtime +30 -exec rm {} \;

这条删掉 30 天前的日志。删之前先不加 -exec,只看列表确认一遍;或者先用 -exec ls -lh {} \; 看一眼大小,确认无误再删。批量操作最怕的就是条件写错,删错了找不回来。

小结

按名字定位、按时间筛最近改动、按大小找大文件、找到之后用 -exec 批量处理。find 的参数看着多,日常其实就这四个组合够用。先想清楚“按什么条件找”,再让 find 去翻,翻文件这件事就不用再靠眼睛一层层看了。

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

评论(0)

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

全部回复

上滑加载中

设置昵称

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

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

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