find
find 是 Linux/Unix 中最重要的文件查找工具之一,生产环境、运维、开发中使用频率极高。
它的核心能力:
按路径、文件类型、名称、时间、大小、权限、用户等条件搜索文件,并对结果执行操作。
基本结构:
find [搜索路径] [条件] [动作]
例如:
find /var/log -name "*.log"
含义:
- 从
/var/log开始搜索 - 找名字匹配
*.log的文件
1. 高频场景一:按文件名查找
精确查找
find /etc -name "nginx.conf"
查找:
/etc/nginx/nginx.conf
通配符查找
查找所有 .log
find /var/log -name "*.log"
查找所有配置文件
find /etc -name "*.conf"
忽略大小写
find . -iname "*.jpg"
匹配:
a.jpg
A.JPG
test.Jpg
2. 高频场景二:按文件类型查找
使用:
-type
常用类型:
| 类型 | 含义 |
|---|---|
| f | 普通文件 |
| d | 目录 |
| l | 软链接 |
| s | socket |
| b | 块设备 |
查找所有文件
find . -type f
查找所有目录
find /var -type d
查找软链接
find /usr/bin -type l
3. 高频场景三:查找并删除(高频运维)
删除临时文件
find /tmp -name "*.tmp" -delete
删除30天以前日志
find /var/log \
-name "*.log" \
-mtime +30 \
-delete
含义:
-mtime +30
修改时间超过30天。
生产更安全:
find /var/log \
-name "*.log" \
-mtime +30 \
-print
先确认。
4. 高频场景四:按文件大小查找
使用:
-size
单位:
| 单位 | 含义 |
|---|---|
| c | 字节 |
| k | KB |
| M | MB |
| G | GB |
查找大于1GB文件
find / -type f -size +1G
查找100MB以上日志
find /var/log \
-type f \
-size +100M
查找空文件
find . -type f -size 0
5. 高频场景五:磁盘空间排查
这是运维最常用。
找大文件
find / \
-type f \
-size +1G
配合排序:
find / \
-type f \
-size +100M \
-exec du -h {} \; |
sort -rh
输出:
5G /data/mysql.log
2G /var/lib/docker.img
6. 高频场景六:按时间查找
Linux 文件有三个时间:
| 参数 | 含义 |
|---|---|
| mtime | 修改时间 |
| atime | 访问时间 |
| ctime | 属性变化时间 |
最近7天修改文件
find . -mtime -7
表示:
7天以内
7天以前
find . -mtime +7
最近1小时修改
更精确:
find . -mmin -60
查找最近10分钟日志
find /var/log \
-name "*.log" \
-mmin -10
7. 高频场景七:查找空目录
清理目录经常用。
find /data -type d -empty
删除:
find /data \
-type d \
-empty \
-delete
8. 高频场景八:权限查找
查找777权限文件
find / -type f -perm 777
安全审计常用。
查找可执行文件
find . -type f -perm /111
查找644权限文件
find . -type f -perm 644
9. 高频场景九:按用户查找
查找某用户文件
find /home -user tom
查找某组文件
find /data -group developers
查找并修改所有者
例如:
find /data \
-user olduser \
-exec chown newuser {} \;
10. 高频场景十:find + exec 执行命令
这是核心能力。
格式:
find 条件 -exec 命令 {} \;
其中:
{}
代表找到的文件。
给所有 shell 文件加执行权限
find . \
-name "*.sh" \
-exec chmod +x {} \;
等价:
chmod +x a.sh
chmod +x b.sh
查看所有大文件
find . \
-size +500M \
-exec ls -lh {} \;
11. 高频场景十一:find + xargs(生产神器)
大量文件处理时:
find . -name "*.log" | xargs rm
更安全:
find . \
-name "*.log" \
-print0 |
xargs -0 rm
原因:
支持:
hello world.log
这种文件名。
并发处理
例如压缩:
find . \
-name "*.log" \
-print0 |
xargs -0 -P8 gzip
同时8个gzip。
12. 高频场景十二:查找包含内容的文件
find 本身不搜索内容,一般组合 grep。
例如:
查找包含 password 的配置:
find /etc \
-type f \
-name "*.conf" \
-exec grep -n "password" {} \;
更快:
grep -R "password" /etc
13. 高频场景十三:查找最近生成文件
排查问题非常常用。
例如:
服务刚异常:
find /var/log \
-type f \
-mmin -30
查看最近30分钟变化日志。
14. 高频场景十四:排除目录
例如:
搜索代码,不查 node_modules:
find . \
-path "./node_modules" -prune \
-o -name "*.js" -print
解释:
-prune
跳过目录。
常见:
排除 Git:
find . \
-path "./.git" -prune \
-o -type f -print
15. 高频场景十五:多条件组合
AND
默认就是 AND:
find . \
-type f \
-name "*.log"
表示:
文件 AND 后缀log。
OR
使用:
-o
例如:
find . \
-name "*.jpg" \
-o \
-name "*.png"
NOT
使用:
!
例如:
排除 txt:
find . ! -name "*.txt"
16. 高频场景十六:生产日志清理
典型:
find /app/logs \
-type f \
-name "*.log" \
-mtime +30 \
-size +10M \
-exec gzip {} \;
含义:
找到:
- log文件
- 超过30天
- 大于10MB
然后压缩。
17. 高频场景十七:Docker环境排查
查大文件:
find /var/lib/docker \
-type f \
-size +1G
查容器日志:
find /var/lib/docker/containers \
-name "*-json.log"
清理:
find /var/lib/docker/containers \
-name "*-json.log" \
-size +1G
18. 高频参数速查表
| 参数 | 作用 | 例子 |
|---|---|---|
-name |
文件名 | -name "*.log" |
-iname |
忽略大小写 | -iname "*.jpg" |
-type |
类型 | -type f |
-size |
大小 | -size +1G |
-mtime |
天 | -mtime -7 |
-mmin |
分钟 | -mmin -60 |
-user |
用户 | -user tom |
-group |
组 | -group dev |
-perm |
权限 | -perm 777 |
-empty |
空文件/目录 | -empty |
-exec |
执行命令 | -exec rm {} \; |
-delete |
删除 | -delete |
-prune |
排除目录 | -prune |
19. 生产环境黄金模板
查日志
find /var/log \
-type f \
-name "*.log"
找大文件
find / \
-type f \
-size +1G
清理旧日志
find /var/log \
-name "*.log" \
-mtime +30 \
-print0 |
xargs -0 rm
批量处理文件
find /data \
-type f \
-name "*.csv" \
-print0 |
xargs -0 -P8 process
排查最近变化
find /app \
-type f \
-mmin -10
20. find 思维模型
掌握 find 可以记住五个维度:
在哪里找?
|
v
路径
找什么?
|
v
-name
-type
什么条件?
|
v
-size
-time
-user
-perm
找到以后?
|
v
-print
-exec
-delete
xargs
实际工作中:
find + xargs + grep + exec
基本覆盖 Linux 文件管理、日志排查、批量运维 80% 的场景。

浙公网安备 33010602011771号