find 命令使用介绍

find 是 Linux 系统中最强大的文件查找命令。 它可以按 文件名、类型、大小、时间、权限 等多种条件递归搜索目录,执行指定操作


基本语法

find [路径] [条件] [操作]

  • 路径 :从哪个目录开始查找(默认当前目录 .

  • 条件:限定文件的筛选规则

  • 操作:找到后执行的动作(如打印、删除等)


常用查找条件

|--------|-------------------------|----------------------------|
| 条件 | 含义 | 示例 |
| -name | 按文件名匹配(支持通配符) | find . -name "*.c" |
| -iname | 忽略大小写的匹配 | find . -iname "*.jpg" |
| -type | 按类型查找: f 文件, d 目录, l 链接 | find /etc -type d |
| -size | 按大小查找(单位:k、M、G) | find . -size +10M |
| -mtime | 按修改时间(天) | find . -mtime -3 (3天内修改) |
| -mmin | 按修改时间(分钟) | find . -mmin -10 (10分钟内修改) |
| -user | 查找属于某用户的文件 | find /home -user root |
| -perm | 按权限查找 | find . -perm 644 |
| -empty | 查找空文件或空目录 | find . -empty |


常用操作动作

|------------------|-------------|------------------------------------------------|
| 操作 | 说明 | 示例 |
| 默认(无操作) | 打印路径 | find . -name "*.log" |
| -print | 显式打印(默认动作) | find /tmp -type f -print |
| -delete | 删除匹配文件 | find . -name "*.o" -delete |
| -exec CMD {} \; | 对每个匹配结果执行命令 | find . -name "*.c" -exec grep -H "usb" {} \; |
| -exec CMD {} + | 批量执行命令(更快) | find . -name "*.c" -exec rm {} + |
| -ok CMD {} \; | 交互确认执行命令 | find . -name "*.bak" -ok rm {} \; |


常见实用示例

复制代码
1. 查找名为 test.c 的文件
find / -name test.c

# 2. 查找大于 100M 的文件
find /home -size +100M

# 3. 查找最近 1 天修改的文件
find . -mtime -1

# 4. 删除所有 .o 临时文件
find . -name "*.o" -delete

# 5. 查找并统计所有 .c 文件数量
find . -name "*.c" | wc -l

# 6. 查找并执行命令(例如打印包含 "usb" 的行)
find . -name "*.c" -exec grep -H "usb" {} \;

# 7. 查找空目录
find . -type d -empty

# 8. 查找 777 权限文件
find / -type f -perm 777

# 9. 按多个条件组合:查找大文件且最近修改
find /var -size +10M -mtime -7

# 10. 查找并批量删除(安全高效)
find logs/ -name "*.log" -mtime +7 -exec rm -f {} +

逻辑组合条件

|----------|---------|-------------------------------------|
| 运算符 | 说明 | 示例 |
| -a | 逻辑与(默认) | find . -type f -a -size +1M |
| -o | 逻辑或 | find . -name "*.c" -o -name "*.h" |
| ! 或 -not | 逻辑非 | find . ! -name "*.c" |


性能与注意事项

  • 对大目录使用 -exec CMD {} +\; 更快;

  • 若仅按文件名匹配,可使用 locatefd 提速;

  • 删除操作建议先打印确认:

  • find . -name "*.tmp" -print ``# 确认后 find . -name "*.tmp" -delete

  • 使用 xargs 可进一步提升效率:

  • find . -name "*.log" | xargs rm -f

官方源码仓库(GNU findutils)

相关推荐
前端摸鱼匠22 分钟前
Vue 3 的v-bind合并行为:讲解v-bind与普通属性合并的规则
前端·javascript·vue.js·前端框架·ecmascript
TO_ZRG39 分钟前
Android Activity、Fragment、ViewModel 完全入门指南
microsoft
REDcker43 分钟前
浏览器端Web程序性能分析与优化实战 DevTools指标与工程清单
开发语言·前端·javascript·vue·ecmascript·php·js
dllmayday1 小时前
Linux 上用终端连接 WiFi
linux·服务器·windows
ACP广源盛139246256731 小时前
IX8024与科学大模型的碰撞@ACP#筑牢科研 AI 算力高速枢纽分享
运维·服务器·网络·数据库·人工智能·嵌入式硬件·电脑
努力努力再努力FFF1 小时前
医生对AI辅助诊断感兴趣,作为临床人员该怎么了解和学习?
人工智能·学习
极客先躯2 小时前
高级java每日一道面试题-2025年11月24日-容器与虚拟化题[Dockerj]-runc 的作用是什么?
java·oci 的命令行工具·最小可用·无守护进程·完全标准·创建容器的核心流程·runc 核心职责思维导图
用户60648767188962 小时前
AI 抢不走的技能:用 Claude API 构建自动化工作流实战
java
donecoding2 小时前
一个 sudo 引发的血案:npm 全局包权限错乱彻底修复
前端·node.js·前端工程化
我命由我123452 小时前
Kotlin 开发 - lateinit 关键字
android·java·开发语言·kotlin·android studio·android-studio·android runtime