插件窝 干货文章 Linux的find命令如何使用

Linux的find命令如何使用

文件 find 查找 path 722    来源:    2025-04-24

Linux find 命令使用指南

find 是 Linux 系统中最强大且常用的文件搜索工具之一,它可以根据各种条件(如文件名、类型、大小、修改时间等)在目录树中查找文件,并能对找到的文件执行操作。

基本语法

find [路径] [选项] [表达式]
  • 路径:指定查找的起始目录,默认为当前目录(.)
  • 选项:控制查找行为的参数
  • 表达式:指定查找条件和操作

常用查找条件

1. 按文件名查找

find /path -name "filename"      # 精确匹配文件名
find /path -iname "filename"     # 不区分大小写
find /path -name "*.txt"         # 通配符查找
find /path -regex ".*\.txt$"     # 使用正则表达式

2. 按文件类型查找

find /path -type f               # 查找普通文件
find /path -type d               # 查找目录
find /path -type l               # 查找符号链接
find /path -type b               # 查找块设备文件
find /path -type c               # 查找字符设备文件
find /path -type p               # 查找命名管道(FIFO)
find /path -type s               # 查找套接字(socket)

3. 按文件大小查找

find /path -size +10M            # 大于10MB的文件
find /path -size -1G             # 小于1GB的文件
find /path -size 1024c           # 等于1024字节的文件

单位说明: - b:512字节块(默认) - c:字节 - w:双字节字 - k:KB - M:MB - G:GB

4. 按时间查找

find /path -mtime -7            # 7天内修改过的文件
find /path -mtime +30           # 30天前修改过的文件
find /path -atime +60           # 60天前访问过的文件
find /path -cmin -10            # 10分钟内状态改变的文件

时间选项: - -atime:访问时间(天) - -mtime:修改时间(天) - -ctime:状态改变时间(天) - -amin:访问时间(分钟) - -mmin:修改时间(分钟) - -cmin:状态改变时间(分钟)

5. 按权限查找

find /path -perm 644            # 权限精确匹配644的文件
find /path -perm -644           # 权限包含644的文件
find /path -perm /u=r           # 用户有读权限的文件

6. 按用户/组查找

find /path -user username       # 属于某用户的文件
find /path -group groupname     # 属于某用户组的文件
find /path -nouser              # 没有有效用户的文件
find /path -nogroup             # 没有有效用户组的文件

组合条件

find /path \( -name "*.txt" -o -name "*.pdf" \)  # 查找txt或pdf文件
find /path -name "*.log" -a -mtime +30           # 查找30天前的log文件
find /path ! -name "*.bak"                       # 排除bak文件

逻辑运算符: - -a:与(AND,默认) - -o:或(OR) - !:非(NOT)

对查找结果执行操作

1. 打印结果(默认)

find /path -name "*.txt" -print

2. 执行命令

find /path -name "*.tmp" -exec rm {} \;          # 删除所有tmp文件
find /path -name "*.jpg" -exec chmod 644 {} \;   # 修改jpg文件权限
find /path -type f -empty -delete                # 删除空文件

说明: - {}:代表find找到的文件名 - \;:表示命令结束(注意空格和分号)

3. 其他操作

find /path -name "*.log" -ls            # 显示详细文件信息
find /path -name "*.txt" -ok rm {} \;   # 交互式删除(每次询问)
find /path -printf "%p %s\n"            # 自定义输出格式

高级用法

1. 限制查找深度

find /path -maxdepth 2 -name "*.conf"   # 最多查找2层目录
find /path -mindepth 3 -name "*.sh"     # 从第3层目录开始查找

2. 查找并压缩文件

find /path -name "*.log" -exec gzip {} \;

3. 查找并统计文件数量

find /path -type f | wc -l

4. 查找并排序

find /path -type f -printf "%s %p\n" | sort -n

实用示例

  1. 查找并删除7天前的日志文件:
find /var/log -name "*.log" -mtime +7 -exec rm {} \;
  1. 查找所有PHP文件并检查语法:
find . -name "*.php" -exec php -l {} \;
  1. 查找大文件(大于100MB):
find / -type f -size +100M -exec ls -lh {} \;
  1. 查找空文件和空目录:
find /path -empty
  1. 查找并备份配置文件:
find /etc -name "*.conf" -exec cp {} {}.bak \;

find命令功能非常强大,上述只是常用功能的介绍。通过组合不同的选项和表达式,可以满足各种复杂的文件查找需求。