# find 命令详解

`find` 是 Linux/Unix 系统中一个非常强大的文件搜索工具，可以根据多种条件查找文件和目录。

## 基本语法

```bash
find [路径] [选项] [操作]
```

## 常用选项

### 按名称查找
- `-name`：按文件名查找（区分大小写）
  ```bash
  find /home -name "*.txt"
  ```
- `-iname`：按文件名查找（不区分大小写）
  ```bash
  find /home -iname "*.TXT"
  ```

### 按类型查找
- `-type`：按文件类型查找
  - `f`：普通文件
  - `d`：目录
  - `l`：符号链接
  ```bash
  find /var -type d
  ```

### 按时间查找
- `-mtime`：按修改时间查找（天数）
  ```bash
  find / -mtime -7  # 7天内修改过的文件
  find / -mtime +30 # 30天前修改过的文件
  ```
- `-mmin`：按修改时间查找（分钟）
  ```bash
  find / -mmin -60  # 60分钟内修改过的文件
  ```
- `-atime`：按访问时间查找
- `-ctime`：按状态变更时间查找

### 按大小查找
- `-size`：按文件大小查找
  ```bash
  find / -size +1G    # 大于1GB的文件
  find / -size -100k  # 小于100KB的文件
  find / -size 50M    # 等于50MB的文件
  ```

### 按权限查找
- `-perm`：按权限查找
  ```bash
  find / -perm 644      # 精确匹配644权限的文件
  find / -perm -644     # 至少包含644权限的文件
  find / -perm /u=r     # 用户有读权限的文件
  ```

### 按用户/组查找
- `-user`：按所有者查找
  ```bash
  find / -user root
  ```
- `-group`：按所属组查找
  ```bash
  find / -group www-data
  ```

## 执行操作

### 基本操作
- `-print`：打印结果（默认操作）
- `-ls`：以ls格式显示结果
  ```bash
  find /tmp -type f -ls
  ```

### 删除文件
- `-delete`：删除找到的文件
  ```bash
  find /tmp -name "*.tmp" -delete
  ```

### 执行命令
- `-exec`：对找到的文件执行命令
  ```bash
  find . -name "*.bak" -exec rm {} \;
  find /var/log -name "*.log" -exec gzip {} \;
  ```

## 组合条件
- `-a` 或 `-and`：与（默认）
- `-o` 或 `-or`：或
- `!` 或 `-not`：非
- `()`：组合条件（需要转义）

```bash
find / \( -name "*.jpg" -o -name "*.png" \) -size +1M
```

## 实用示例

1. 查找并删除空文件：
   ```bash
   find /tmp -type f -empty -delete
   ```

2. 查找最近修改的PHP文件：
   ```bash
   find /var/www -name "*.php" -mtime -1
   ```

3. 查找所有可执行文件：
   ```bash
   find / -type f -perm /a=x
   ```

4. 查找并更改权限：
   ```bash
   find /home -type f -perm 777 -exec chmod 644 {} \;
   ```

5. 查找大文件并排序：
   ```bash
   find / -type f -size +100M -exec ls -lh {} + | sort -k5 -rh
   ```

`find` 命令功能非常强大，上述只是常用功能的介绍。可以通过 `man find` 查看完整手册。