跳到主要内容

Find & Xargs 速查表

find 是 Linux 上最强大的文件查找工具,xargs 则是批量处理查找结果的最佳搭档。本速查表按功能类别整理了 find 和 xargs 的常用命令,涵盖按名称/路径、时间、大小、类型、权限查找,以及执行操作和批量处理等场景,每个命令都有实际使用示例。

更新: 2026-07-16·33 条命令

使用场景速查

你要做什么用哪个命令
按文件名查找find . -name "*.txt"
查找最近修改的文件find . -mtime -7
查找大文件find . -size +100M
找到后执行操作find . -exec rm {} \;
只查找目录或文件find . -type d
按权限查找find . -perm 644
批量处理结果find . -print0 \xargs -0

基本查找

``bash # 按名称查找 find . -name "*.txt" # 按文件名精确匹配 find . -iname "readme*" # 忽略大小写 find . -name "[ab]*.py" # 通配符模式:[ab] 开头 find . -name "*.tmp" -o -name "*.log" # 或条件(-o)

# 按路径查找 find . -path "*/src/*.c" # 按路径匹配 find . -ipath "*/.git/*" # 路径忽略大小写 find . -regex '.*\.\(txt\|md\)$' # 正则匹配完整路径 find . -regextype posix-egrep -regex '.*\.(txt|md)$'

# 否定条件 find . -not -name "*.txt" # 取反 find . ! -name "*.txt" # 取反(! 简写)

# 限制搜索深度 find . -maxdepth 1 -name "*.txt" # 仅当前目录 find . -mindepth 2 -name "*.txt" # 至少从第2层目录开始 find . -maxdepth 3 -mindepth 1 # 第1-3层

# 按 inode 查找 find . -inum 1234567 # 按 inode 编号查找 find . -samefile /path/to/file # 查找硬链接 `

时间过滤

`bash # 修改时间(mtime) find . -mtime -7 # 最近 7 天内修改 find . -mtime +30 # 30 天前修改 find . -mtime 0 # 今天修改

# 访问时间(atime) find . -atime -3 # 最近 3 天访问过

# 状态变更时间(ctime) find . -ctime -1 # 最近 1 天状态变更

# 分钟级精度 find . -mmin -60 # 最近 60 分钟内修改 find . -mmin +120 # 超过 120 分钟前修改

# 新文件比较 find . -newer reference.txt # 比 reference.txt 更新的文件 find . -anewer reference.txt # 比 reference.txt 更新的访问时间 find . -cnewer reference.txt # 比 reference.txt 更新的状态变更

# 组合时间条件 find . -mtime -7 -a -mtime +0 # 7天内但不是今天 find . -daystart -mtime -1 # 从今天零点算起的最近 1 天 `

大小过滤

`bash # 精确大小 find . -size 1024c # 精确 1024 字节 find . -size 1k # 精确 1KB(1024 字节)

# 大于/小于 find . -size +100M # 大于 100MB find . -size -1G # 小于 1GB find . -size +500k -a -size -1M # 500KB 到 1MB 之间

# 其他单位 find . -size +1G # 大于 1GB find . -size +10M # 大于 10MB find . -size +1000k # 大于 1000KB find . -size +1M -a -size -10M # 1MB 到 10MB 之间

# 空文件/空目录 find . -empty # 空文件或空目录 find . -type f -empty # 空文件 find . -type d -empty # 空目录 `

执行操作

`bash # -exec 基础 find . -name "*.bak" -exec rm {} \; # 删除每个文件(\; 结束) find . -name "*.log" -exec rm {} + # 批量作为参数(+ 结束,更快)

# -ok 带确认 find . -name "*.tmp" -ok rm {} \; # 删除前逐个确认

# 多次执行不同命令 find . -name "*.txt" -exec cp {} {}.back \; # 复制为 .back 后缀

# execdir(在文件所在目录执行) find . -name "*.txt" -execdir rm {} \; # 更安全(在当前目录执行) find . -name "*.jpg" -execdir convert {} {}.png \; # 转换图片

# 使用 sh -c 执行复杂命令 find . -name "*.html" -exec sh -c 'gzip "{}"' \; # 对每个文件执行 find . -name "*.log" -exec sh -c 'mv "$1" "${1%.log}.txt"' _ {} \; # 重命名

# 删除匹配的文件 find . -name "*.swp" -delete # 直接删除(比 -exec rm 更快) `

类型过滤

`bash # 按文件类型 find . -type f # 只查找普通文件 find . -type d # 只查找目录 find . -type l # 只查找符号链接 find . -type s # 只查找 socket 文件 find . -type p # 只查找命名管道(FIFO) find . -type b # 块设备 find . -type c # 字符设备

# 组合类型 find . -type f -o -type l # 文件或符号链接 find . -type f -a -name "*.sh" # 普通文件且以 .sh 结尾

# 按链接 find . -type l -ls # 查找符号链接并显示详情 find . -xtype l # 查找断开的符号链接 `

权限查找

`bash # 精确权限匹配 find . -perm 644 # 精确权限 644 find . -perm 755 # 精确权限 755

# 包含某权限 find . -perm -u=r # 拥有者有读权限 find . -perm -g=w # 组有写权限 find . -perm -o=x # 其他人有执行权限

# 任意用户有某权限 find . -perm /u=r # 任意用户有读权限 find . -perm /222 # 任意用户有写权限

# 按属主/属组 find . -user admin # 属于 admin 用户 find . -group www-data # 属于 www-data 组 find . -uid 1000 # 按用户 ID find . -gid 100 # 按组 ID

# 按文件模式 find . -type f -perm /4000 # SUID 文件 find . -type f -perm /2000 # SGID 文件 find . -type f -perm /1000 # sticky bit `

批量操作(Xargs)

`bash # 基本使用 find . -name "*.txt" | xargs rm # 删除所有 .txt 文件(注意空格问题) find . -name "*.txt" -print0 | xargs -0 rm # 正确处理空格文件名

# 批量操作 find . -name "*.py" -print0 | xargs -0 -I {} cp {} /backup/ # 复制到备份 find . -name "*.jpg" -print0 | xargs -0 -P 4 convert -resize 50% # 并行处理

# 统计和计数 find . -name "*.log" -print0 | xargs -0 wc -l # 统计所有日志行数 find . -type f -print0 | xargs -0 ls -lh # 查看文件详情

# 限制参数数量 find . -print0 | xargs -0 -n 10 ls -lh # 每次最多 10 个参数

# 占位符 find . -name "*.txt" -print0 | xargs -0 -I file cp file /tmp/ # 用 file 占位

# 交互式处理 find . -name "*.tmp" -print0 | xargs -0 -p rm # 执行前确认

# 组合 grep find . -name "*.py" -print0 | xargs -0 grep -l "TODO" # 查找含 TODO 的文件 find . -type f -print0 | xargs -0 grep -c "error" | grep -v ":0$" # 含 error 的文件 ``

基本查找(7)

命令难度
find . -name
按文件名查找(支持通配符)
基础
find . -iname
按文件名查找(忽略大小写)
基础
find . -path / -ipath
按路径模式匹配
中级
find . -regex
用正则表达式匹配完整路径
高级
find . -maxdepth / -mindepth
限制搜索目录深度
中级
find . -not / !
查找不匹配条件的文件(取反)
中级
find . -o
多个条件或(OR)组合
中级

时间过滤(4)

命令难度
find . -mtime
按文件修改时间过滤(天级)
基础
find . -mmin
按文件修改时间过滤(分钟级)
中级
find . -atime / -amin
按文件访问时间过滤
中级
find . -newer
查找比指定文件更新的文件
中级

大小过滤(3)

命令难度
find . -size
按文件大小过滤(支持 +/-
基础
find . -size +100M
查找大于 100MB 的文件
基础
find . -empty
查找空文件或空目录
基础

执行操作(6)

命令难度
find . -exec {} \;
对每个匹配文件执行命令
基础
find . -exec {} +
批量执行命令(所有文件一次传入)
中级
find . -ok
执行命令前逐个确认
中级
find . -execdir
在文件所在目录执行命令(更安全)
高级
find . -delete
直接删除匹配文件(比 -exec rm 更快)
基础
find . -exec sh -c
使用 shell 执行复杂命令
高级

类型过滤(3)

命令难度
find . -type f
只查找普通文件
基础
find . -type d
只查找目录
基础
find . -type l / -xtype l
查找符号链接或断开的链接
中级

权限查找(4)

命令难度
find . -perm
按精确权限查找
中级
find . -perm -mode
查找包含指定权限的文件
中级
find . -user / -group
按属主或属组查找
中级
find . -perm /4000
查找 SUID/SGID/sticky bit 文件
高级

批量操作(6)

命令难度
xargs -0
以 null 字符分隔的 xargs(安全处理空格)
基础
xargs -I {}
使用占位符替换参数位置
中级
xargs -P N
并行执行命令(N 个进程同时)
高级
xargs -n N
每次最多传递 N 个参数
中级
xargs -p
执行前确认(交互模式)
中级
find . -print0 | xargs -0 grep
批量搜索文件内容
中级

常见问题

本速查表数据整理自各工具官方文档。最后更新: 2026-07-16。