## find 是什么？

`find` 是 Linux/Unix 下最强大的**查找文件和目录的命令**。
它可以根据**文件名、类型、大小、修改时间、权限、内容等各种条件**，递归搜索整个目录树，非常适合批量查找、批量处理、自动化脚本等场景。

---

### find 的常见用途

* 按文件名或通配符查找
* 按时间、大小、类型筛选
* 找到后自动批量处理（配合 -exec）
* 查找并删除、复制、批量重命名等

---

### 常用用法和实例

#### 1. 按名称查找文件

```bash
find . -name "*.log"
```

**效果：**
在当前目录及所有子目录下查找后缀为 `.log` 的文件。

---

#### 2. 按大小查找大文件

```bash
find /var -size +100M
```

**效果：**
查找 `/var` 目录下大于 100MB 的文件。

---

#### 3. 按修改时间查找（如24小时内修改）

```bash
find ~/project -mtime -1
```

**效果：**
查找最近1天（24小时）内有修改的文件。

---

#### 4. 查找目录（按类型）

```bash
find . -type d -name "backup*"
```

**效果：**
查找当前目录及子目录下名字以 "backup" 开头的所有目录。

---

#### 5. 查找并自动删除

```bash
find . -name "*.tmp" -delete
```

**效果：**
查找所有 `.tmp` 文件并直接删除（慎用）。

---

#### 6. 查找并批量处理（如查到后批量执行命令）

```bash
find . -name "*.sh" -exec chmod +x {} \;
```

**效果：**
查找所有 `.sh` 脚本并批量赋予可执行权限。

---

### 常用参数总结

| 参数      | 作用                   |
| ------- | -------------------- |
| -name   | 指定文件名或通配符            |
| -type   | 文件类型（f 文件/d 目录/l 链接） |
| -size   | 文件大小（+/- 指大于/小于）     |
| -mtime  | 修改时间（单位：天）           |
| -atime  | 访问时间                 |
| -ctime  | 改变属性时间               |
| -exec   | 找到后执行后面命令            |
| -delete | 直接删除匹配文件             |
| -user   | 查找属于某个用户的文件          |
| -perm   | 查找指定权限的文件            |

---

### 讲解口播内容（适合教程录音）

> find 是 Shell 下最常用的批量查找命令，不仅可以按名字，还能按大小、时间、类型、权限等组合查找。比如 find . -name "\*.log" 就能找出所有日志文件，还能直接删除、批量赋权限，非常适合运维和开发日常批量处理。如果配合 -exec，能实现自动化脚本里的批量操作。

---

### 实例代码（配合讲解，分屏演示）

```bash
# 查找所有以 .conf 结尾的配置文件
find /etc -name "*.conf"

# 查找超过 1GB 的文件
find / -size +1G

# 查找过去3天有修改的文件
find . -mtime -3

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

# 查找并删除所有 .bak 备份文件
find . -name "*.bak" -delete

# 批量给 .sh 文件加执行权限
find . -name "*.sh" -exec chmod +x {} \;
```

