在 Linux 中,`find` 命令用于在文件系统中查找符合条件的文件和目录。它非常强大,支持多种搜索条件和操作。
一、 基本语法
find [路径] [选项] [查找条件] [操作]
二、常见用法
1. 查找特定文件或目录
find /path/to/directory -name "filename.txt"
在指定目录及其子目录中查找名为 `filename.txt` 的文件。
2. 查找所有文件类型
find /path/to/directory -type f # 查找所有文件
find /path/to/directory -type d # 查找所有目录
3. 按文件大小查找
find /path/to/directory -size +10M # 查找大于 10 MB 的文件
find /path/to/directory -size -1G # 查找小于 1 GB 的文件
4. 按修改时间查找
find /path/to/directory -mtime -7 # 查找最近 7 天内修改过的文件
find /path/to/directory -mtime +30 # 查找 30 天前未修改的文件
5. 按权限查找
find /path/to/directory -perm 644 # 查找权限为 644 的文件
6. 查找并执行命令
find /path/to/directory -name "*.log" -exec rm {} \; # 查找并删除所有 .log 文件
7. 查找空文件或空目录
find /path/to/directory -empty # 查找空文件和空目录
三、常用选项
`-name`: 按名称查找文件。
`-iname`: 忽略大小写,按名称查找文件。
`-type`: 指定文件类型(`f` = 文件, `d` = 目录, `l` = 符号链接等)。
`-size`: 按文件大小查找。
`-mtime`: 按文件最后修改时间查找(单位:天)。
`-atime`: 按文件最后访问时间查找。
`-ctime`: 按文件最后状态改变时间查找。
`-perm`: 按文件权限查找。
`-exec`: 对查找到的每个文件执行指定命令。
四、示例
查找 `/var/log` 下所有以 `.log` 结尾的文件:
find /var/log -name "*.log"
查找 `/home/user` 下所有大于 100 MB 的文件并删除它们:
find /home/user -type f -size +100M -exec rm {} \;