linux find 命令超全完整指南
一、基础语法与工作逻辑
find [起始路径] [表达式] [操作]
- 起始路径:指定搜索根目录,默认为当前目录.。支持多路径(如find /etc /var)
- 表达式:定义搜索条件(如文件名、类型、时间等)。
- 操作:对匹配文件执行命令(如删除、压缩等)。
二、核心查找条件详解
1. 按名称查找
-
精确匹配:
-name "文件名"
find /home -name "example.txt" # 精确查找文件
-
模糊匹配:支持通配符*和?
find /var/log -name "*.log" # 匹配所有.log文件
-
忽略大小写:-iname
find /etc -iname "CONFIG*" # 匹配Config、config等
2. 按文件类型查找
find /tmp -type d # 查找目录(d=目录,f=普通文件,l=符号链接)
3. 按文件大小查找
Bashfind / -size +100M # 大于100MB的文件
find ~ -size -10k # 小于10KB的文件
find /var -size +50M -size -100M # 50MB~100MB的文件
-
单位:
c(字节)、k(KB)、M(MB)、G(GB)
4. 按时间查找
-
修改时间(mtime):
Bashfind /var/log -mtime -7 # 7天内修改过的文件 find /backup -mtime +30 # 30天前修改过的文件
-
访问时间(atime):
find /home -atime -1 # 24小时内访问过的文件
-
分钟级精度:
find /opt -mmin -60 # 60分钟内修改过的文件
-
时间参数说明:
-
+n:n天/分钟前,-n:n天/分钟内,n:精确天数/分钟
-
5. 按权限与用户/组查找
-
权限匹配
Bashfind / -perm 644 # 权限精确为644的文件 find /etc -perm /u=r # 用户有读权限
-
用户/组匹配
Bashfind /home -user john # 属于用户john的文件 find /var -group www-data # 属于组www-data的文件
6. 特殊属性查找
-
空文件/目录:-empty
find ~ -empty # 查找空文件或目录
-
硬链接匹配:-inum
find . -inum 138956 # 通过inode号查找硬链接
三、组合逻辑与排除条件
-
逻辑与(默认):
find /var/log -name "*.log" -size +10M # 同时满足名称和大小
-
逻辑或:-o
find /tmp $$ -name "*.tmp" -o -name "*.temp" $$ # 匹配.tmp或.temp
-
排除目录:-prune
find /home -path "*/cache/*" -prune -o -name "*.txt" # 排除/cache目录
-
反向条件:-not或!
find . ! -name "*.txt" # 排除所有.txt文件
四、操作执行与高级技巧
1. 直接操作
-
删除文件:-delete
find /tmp -name "*.tmp" -delete # 删除匹配文件
-
执行命令:-exec
find . -name "*.jpg" -exec chmod 644 {} \; # 修改权限,`{}`为占位符
-
交互确认:-ok(需用户确认)
find /var/log -name "*.log" -ok rm {} \; # 删除前询问
2. 结合管道与xargs
find /var/log -name "*.log" | xargs ls -l # 通过管道传递结果
3. 高级操作示例
-
压缩日志
find /var/log -name "*.log" -exec gzip {} \; # 压缩所有日志
-
批量移动/重命名
find . -name "tmp_*" -exec mv -t /tmp {} + # 移动到/tmp目录
五、性能优化与高级参数
-
限制搜索深度
find /etc -maxdepth 2 -name "*.conf" # 仅搜索2层目录
-
排除挂载点-xdev或-mount
find / -xdev -name "lostfile" # 不搜索其他文件系统
-
快速定位:优先缩小路径范围,避免从根目录
六、常见组合示例
-
查找大文件并排序
find / -type f -size +100M -exec ls -lh {} \; | sort -k5 -hr
-
查找最近修改的配置文件
find /etc -type f -name "*.conf" -mtime -1
-
批量删除空目录
find . -type d -empty -delete
七、与locate
命令对比
命令 | 实时性 | 依赖数据库 | 速度 |
---|---|---|---|
find | 实时搜索 | 无 | 较慢 |
locate | 非实时 | 需updatedb | 极快 7 |
附:完整参数速查表
选项 | 作用 |
---|---|
-name | 按文件名匹配 |
-iname | 不区分大小写的名称匹配 |
-type | 按文件类型过滤 |
-size | 按文件大小过滤 |
-mtime | 按修改时间过滤 |
-exec | 对结果执行命令 |
-delete | 直接删除匹配文件 |