linux find 命令超全完整指南

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"         # 不搜索其他文件系统
    
  • 快速定位:优先缩小路径范围,避免从根目录

六、常见组合示例

  1. 查找大文件并排序

    find / -type f -size +100M -exec ls -lh {} \; | sort -k5 -hr
    
  2. 查找最近修改的配置文件

    find /etc -type f -name "*.conf" -mtime -1
    
  3. 批量删除空目录

    find . -type d -empty -delete
    

七、与locate命令对比

命令实时性依赖数据库速度
find实时搜索较慢
locate非实时updatedb极快 7

附:完整参数速查表

选项作用
-name按文件名匹配
-iname不区分大小写的名称匹配
-type按文件类型过滤
-size按文件大小过滤
-mtime按修改时间过滤
-exec对结果执行命令
-delete直接删除匹配文件
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

疑犯

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值