Linux 后台 / 运维岗高频命令里,find 一定有一席之地。 服务器上几十万文件,靠 ls 翻?靠肉眼看?不现实。 这篇文章把 find 的 7 种实战用法 + 面试真题 + 避坑心法 一次讲透。
一、先来一道面试真题
服务器上有一个 logs 目录,如何删除最后一次访问时间超过一年的日志文件?

很多人卡壳。
答案其实就一行:

cd logsfind . -type f -atime +365 -exec rm -rf {} \;

看不懂没关系,看完下面 7 个用法,你不仅能写,还能讲。

二、find 在干什么

先定范围 → 再定条件 → 最后干点什么

find [从哪找] [什么条件] [找到后干嘛]
三、7 种用法速查图(建议收藏)

场景

核心参数

示例

按名字

-name

find . -name "*.log"

按类型

-type

find . -type d

按时间

-atime/-mtime/-ctime

-mtime +5

按大小

-size

-size +100M

按权限

-perm

-perm 777

按属主

-user/-group

-user root

找到就执行

-exec

-exec rm {} \;

条件可以叠:
find 多个条件之间是「与」关系,写得越细,捞得越准。

四、PART 01 按名称查找 1. 精确找

find . -name test.txt
2. 通配符找

find ./yang/books -type f -name "*.pdf"

⚠️ 重点坑

-name *.pdf     # ❌ shell 会先展开-name "*.pdf"   # ✅ find 才收到通配符
五、PART 02 按类型查找

find . -type d -name "fcant*"find . -type l -name "yang*"
type 速查

f  普通文件d  目录l  符号链接b  块设备c  字符设备s  套接字
六、PART 03 按时间查找(最容易被问)

Linux 文件有三个时间:

atime:最后一次「读」mtime:最后一次「改内容」ctime:最后一次「改元数据」(权限/属主等)
示例

# 一年没访问find . -type f -atime +365# 正好 5 天前改过find . -type f -mtime 5# 5~10 天前改过find . -type f -mtime +5 -mtime -10

记死:

+ 大于- 小于无符号 = 正好
七、PART 04 按大小查找

find . -type f -size +10M -size -1G
单位表

单位

含义

c

字节

k

KB

M

MB

G

GB

b

512 字节块(默认)

⚠️ 磁盘爆了别直接:

find / -type f -size +1G

先 cd /var 或 /home,别扫 /proc。

八、PART 05 按权限查找(安全巡检神器)

find . -type f -perm 777
三种写法区别

-perm 777    # 精确等于-perm -777   # 777 权限「全有」-perm /777   # 任意一位命中

✅ 生产环境扫高危:

find / -type f -perm -777
九、PART 06 按属主 / 属组

find . -type f -user fcantfind . -type f -group dev
找“幽灵文件”

find / -type f -nouser
离职同事删了账号,文件还在?这条超好用。
十、PART 07 找到后执行(-exec)

find . -type f -atime +365 -exec rm -rf {} \;
三个关键符号

{}   → 找到的文件\;   → 每条执行一次+    → 批量传参(更快)
删之前先看看(保命)

find . -type f -atime +365 -exec ls -l {} \;
高性能写法

find . -type f -atime +365 -exec rm -rf {} +
十一、回到面试题(标准答法)
删除 logs 目录中一年没访问的日志

cd logsfind . -type f -atime +365 -exec rm -rf {} \;
讲解口径(面试官爱听)
  1. find .:从当前目录递归
  2. -type f:只删文件,不删目录
  3. -atime +365:一年没读
  4. -exec rm -rf {} \;:对结果逐个删除
十二、三条心法(比参数更重要) ✅ 心法 1:先 cd,再 find
别一动就 find /
✅ 心法 2:条件叠加 = 更准

find . -type f -name "*.log" -size +100M -mtime +30
✅ 心法 3:删前先 ls

-exec ls -l {} \;
这一行,能救生产事故。