find 入门:按名字、时间和大小在 Linux 里找文件

举报
yd_96310213 发表于 2026/10/25 15:34:58 2026/10/25
【摘要】 文件不知道放哪了,是 Linux 新手最常遇到的问题之一。与其一层层目录翻,不如直接让 find 帮你找:它从指定目录出发,递归遍历子目录,按你给的条件筛出结果。 按名字找最基本的用法是按名字找。find /home -name “*.log”,就是在 /home 下面找所有以 .log 结尾的文件。注意引号不能省:不加引号,星号会先被 shell 展开,找出来的就不是你想要的了。名字大小写...

文件不知道放哪了,是 Linux 新手最常遇到的问题之一。与其一层层目录翻,不如直接让 find 帮你找:它从指定目录出发,递归遍历子目录,按你给的条件筛出结果。

按名字找

最基本的用法是按名字找。find /home -name “*.log”,就是在 /home 下面找所有以 .log 结尾的文件。注意引号不能省:不加引号,星号会先被 shell 展开,找出来的就不是你想要的了。名字大小写不确定时,把 -name 换成 -iname,它会忽略大小写,Find、FIND 都能命中。

按类型筛

按类型筛也很有用。-type f 只要普通文件,-type d 只要目录。比如想找某个目录下所有子目录:find /home/user -type d。配合名字一起用,条件之间默认是“并且”关系,写在一起就行。

按时间找

按时间找文件是排障时的利器。-mtime -7 表示 7 天内修改过的文件,-mtime +30 表示 30 天前修改过的。想找最近一周内改过的配置文件:find /etc -mtime -7 -type f。清理旧日志时反过来用 +30,先列出来确认一遍再删,别直接上 -delete。

按大小筛

按大小筛同样直观。-size +100M 找出大于 100M 的文件,-size -10k 找出小于 10k 的。磁盘快满时,先用 find / -size +500M -type f 2>/dev/null 看看大文件都在哪,末尾的 2>/dev/null 是把无权限目录的报错屏蔽掉,输出干净很多。

找到之后直接处理

找到之后想直接处理,可以加 -exec。比如把找到的临时文件列出来:find /tmp -name “*.tmp” -exec ls -lh {} ;。这里的 {} 代表每个找到的文件,分号表示命令结束,分号前要加反斜杠转义。刚开始用时先不加 -delete,先用 -print 或 -exec ls 确认结果,确认无误再动手删,这是避免误删的习惯。

控制递归深度

最后提醒一点:find 默认会进子目录递归找,如果只想看当前目录一层,加 -maxdepth 1 限制深度,速度快、结果也干净。

掌握名字、类型、时间、大小这四个条件,再加 -exec 做后续处理,日常找文件基本够用了。

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

评论(0)

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

全部回复

上滑加载中

设置昵称

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

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

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