find 是强大的文件搜索工具,基于各种条件在目录树中查找文件。
find 递归遍历指定目录,根据表达式匹配文件和目录。它支持按名称、类型、大小、修改时间、权限、所有者等多种条件过滤,并可对匹配结果执行操作。
.py 文件)-exec 执行任意命令示例 1:按名称查找
find /home/alice -name "*.py"
/home/alice/project/src/main.py
/home/alice/project/src/utils.py
/home/alice/project/tests/test_main.py
示例 2:按类型查找(目录)
find /etc -type d -name "nginx*"
/etc/nginx
/etc/nginx/conf.d
示例 3:查找大于 100MB 的文件
find /var/log -type f -size +100M
示例 4:查找最近 7 天内修改的文件
find . -type f -mtime -7
示例 5:查找并删除所有 .tmp 文件
find /tmp -name "*.tmp" -delete
示例 6:查找所有空文件
find . -type f -empty
示例 7:对找到的文件执行命令
find . -name "*.log" -exec gzip {} \;
示例 8:查找权限为 777 的文件
find /var/www -type f -perm 777
| 参数 | 说明 |
|---|---|
-name PATTERN |
按文件名模式匹配(大小写敏感) |
-iname PATTERN |
按文件名模式匹配(忽略大小写) |
-type TYPE |
按类型匹配:f=普通文件,d=目录,l=符号链接,s=套接字,p=管道,c=字符设备,b=块设备 |
-size N |
按大小匹配:+N 大于 N,-N 小于 N,N 精确等于。单位:c=字节,k=KB,M=MB,G=GB |
-mtime N |
按修改时间(天):+N 超过 N 天前,-N N 天内,N 恰好 N 天前 |
-mmin N |
按修改时间(分钟):+N 超过 N 分钟前,-N N 分钟内 |
-atime N |
按访问时间(天) |
-ctime N |
按状态变更时间(天) |
-perm MODE |
按权限匹配,如 644、+x、-w |
-user USER |
按文件所有者匹配 |
-group GROUP |
按文件所属组匹配 |
-empty |
匹配空文件或空目录 |
-exec CMD {} \; |
对每个匹配项执行命令,{} 是匹配项的占位符 |
-exec CMD {} + |
对匹配项批量执行命令(减少进程创建) |
-delete |
删除匹配的文件 |
-maxdepth N |
限制最大递归深度为 N 层 |
-mindepth N |
从第 N 层开始匹配 |
-not EXPR / ! EXPR |
否定表达式 |
-and / -a |
逻辑与(默认行为) |
-or / -o |
逻辑或 |
-print |
打印匹配结果(默认操作) |
-print0 |
以 NUL 字符分隔输出(与 xargs -0 配合) |