find 是 Linux 下强大灵活的文件查找工具,支持按名称、类型、时间、大小等条件精准定位,并通过 -exec 或 + 批量执行命令,结合管道可增强实用性。

Find 命令是 Linux 下最强大、最灵活的文件查找工具之一,配合 -exec 参数,不仅能精准定位文件,还能直接对结果批量执行命令,无需中转脚本或手动处理。
按名称、类型、时间等条件精准定位文件
find 的核心能力在于组合多种条件缩小搜索范围。常用写法如下:
- 按文件名查找:
find /path -name "log*.txt"(支持通配符,注意引号避免 shell 提前展开) - 按类型筛选:
find /var -type f -name "*.conf"(-type f查普通文件,-type d查目录) - 按修改时间查找:
find /tmp -mtime -7(7 天内修改过的文件;-mtime +30表示 30 天前) - 按大小筛选:
find ~ -size +100M(大于 100MB 的文件;-size -1k表示小于 1KB)
用 -exec 对查到的每个文件执行命令
-exec 后接任意 shell 命令,{} 代表当前匹配的文件路径,\; 表示命令结束。它逐个执行,安全可靠:
- 批量删除日志:
find /var/log -name "*.old" -exec rm {} \; - 查看文件头几行:
find . -name "README.md" -exec head -n 1 {} \; - 更改权限:
find /home/user -name "*.sh" -exec chmod +x {} \;
注意:-exec 每匹配一个文件就启动一次命令进程,适合操作较轻量的任务。
用 + 替代 \; 实现批量高效执行
当要对大量文件运行同一命令(如 chmod、chown),用 + 可把多个路径一次性传给命令,显著提升效率:
Linux 安全审计工具,检查 SSH 配置、开放/监听端口、防火墙规则(ufw/iptables/nftables)、失败登录尝试、sudoers 权限...
- 高效批量授权:
find /app -name "*.py" -exec chmod 644 {} + - 批量重命名(需配合 rename 或 shell 循环):
find . -name "temp_*" -exec mv {} /backup/ \;(此处仍用 \;,因 mv 不支持多源一目标)
+ 和 \; 的区别在于参数传递方式:+ 将尽可能多的匹配项拼成单次命令调用,而 \; 是严格一一对应。
结合其他命令增强实用性
find 本身不排序、不分页、不统计,但可与标准工具管道协作:
- 按大小倒序列出前 10 个大文件:
find / -type f -size +50M -print0 | xargs -0 du -h | sort -hr | head -10 - 统计某类文件数量:
find /etc -name "*.conf" | wc -l - 安全预览再操作(先用 -ls 或 -print 确认):
find /tmp -name "*.tmp" -print,确认无误后再加 -exec
使用 -print0 和 xargs -0 可正确处理含空格或特殊字符的文件名,避免解析错误。
掌握 find 的条件组合逻辑和 -exec/+ 的执行机制,就能在终端里快速完成原本需要脚本或图形工具的工作。不复杂但容易忽略细节。










