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% 的场景。

posted @ 2026-07-10 11:25  ZovoeY  阅读(44)  评论(0)    收藏  举报