Linux 找文件入门:find 命令一次讲清

举报
yd_299492234 发表于 2026/11/11 08:01:29 2026/11/11
【摘要】 服务器用久了,文件只会越来越多:日志滚到哪个目录了、上周改的配置到底放在哪、哪个大文件把磁盘吃满了。这类问题不用一个目录一个目录翻,Linux 自带的 find 命令就是干这个的。参数看着多,其实常用的就那么几个。 find 的基本样子find 的写法是:先写从哪个目录开始找,再写找什么样的文件,最后写找到之后干什么。find /var/log -name "*.log"这行是说:从 /va...

服务器用久了,文件只会越来越多:日志滚到哪个目录了、上周改的配置到底放在哪、哪个大文件把磁盘吃满了。这类问题不用一个目录一个目录翻,Linux 自带的 find 命令就是干这个的。参数看着多,其实常用的就那么几个。

find 的基本样子

find 的写法是:先写从哪个目录开始找,再写找什么样的文件,最后写找到之后干什么。

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

这行是说:从 /var/log 开始,往下所有子目录里,找文件名以 .log 结尾的文件。不写动作时,find 默认把找到的路径一条条打印出来。

最常用的四个条件

按名字找,-name 最常用,引号里的星号表示任意字符:

find /home -name "backup*"     # 名字以 backup 开头的文件
find . -name "*.conf"          # 当前目录下所有 .conf 文件

开头的点表示当前目录,想从根目录找就写 /。

按类型找,-type 后面跟一个字母:f 是普通文件,d 是目录。比如只找目录:

find /etc -type d -name "nginx*"

两个条件写在一起,意思是同时满足,不用额外加符号。

按大小找,-size 适合揪出占地方的大文件:

find / -size +500M     # 比 500MB 大的文件
find /var -size -1k    # 比 1KB 小的文件

加号是大于,减号是小于,单位常用 M 和 G。

按时间找,-mtime 按修改天数算:

find /tmp -mtime +7    # 7 天前改过、之后再没动过的文件

清理临时目录、找最近改过的文件时特别顺手,比如 -mtime -1 就是 24 小时内改过的。

找到之后顺手处理

find 真正的威力在 -exec:对每个找到的文件执行一条命令,{}\; 表示把文件名填进去:

find /tmp -mtime +7 -exec rm {} \;

这行是把 /tmp 里 7 天没动过的文件删掉。这种带删除的命令一定要小心:先把 -exec 那段去掉跑一遍,看清楚打印出来的列表全是该删的,再加上删除动作。删错了可没有回收站。

只想先数一数有多少个,也可以把结果交给 wc 统计行数:

find /var/log -name "*.log" | wc -l

新手最容易踩的两个坑

第一,星号没加引号。 像 *.log 这种带星号的写法一定要用引号包起来。不加引号时,命令行会先把星号按当前目录的文件展开,find 拿到的就不是你想要的条件了,结果自然不对。

第二,一上来就从根目录全盘找。 从 / 开始找会把整台机器翻一遍,慢不说,权限不够的目录还会刷一屏报错。养成习惯:先想清楚大概在哪个目录,把范围缩小,既快又干净。报错太多看不清结果时,可以只看结果、先不管报错。

小结

找文件这件事,先定范围、再定条件:名字、类型、大小、时间,四个条件能组合出绝大多数日常需求。find 不用背全,记住这几个,遇到"文件在哪"的问题就不用再一层层点目录了。真要批量处理,先打印列表确认,再加 -exec 动手,这一步别省。

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

评论(0)

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

全部回复

上滑加载中

设置昵称

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

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

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