find 是 Linux 最强大的文件查找工具,支持按名称、类型、大小、时间等条件搜索。
基本语法
1
| find [路径] [查找条件] [执行动作]
|
常用示例
按名称查找:
1
2
3
| find . -name "filename" # 查找指定文件名
find . -name "*.txt" # 查找所有 .txt 文件
find . -iname "*.txt" # 忽略大小写
|
按类型查找:
1
2
3
| find /path -type f # 普通文件
find /path -type d # 目录
find /path -type l # 符号链接
|
按修改时间查找:
1
2
3
| find . -mtime -7 # 7 天内修改
find . -mtime +30 # 30 天前修改
find . -mtime 7 # 恰好 7 天前修改
|
按大小查找:
1
2
3
| find . -size +10M # 大于 10MB
find . -size -100k # 小于 100KB
find . -size 10M # 恰好 10MB
|
按权限或用户查找:
1
2
3
| find . -user root # 属于 root 用户
find . -group admin # 属于 admin 组
find . -perm 644 # 权限为 644
|
查找空文件或目录:
执行动作
查找并执行命令:
1
2
3
| find . -name "*.log" -exec rm {} \; # 删除所有 .log 文件
find . -type f -exec chmod 755 {} \; # 修改权限
find . -name "*.txt" -ls # 显示详细信息
|
{} 被替换为找到的文件名,\; 表示命令结束。
查找并删除:
1
| find . -name "*.bak" -delete
|
组合条件
1
2
| find . -name "*.txt" -not -name "README.txt" # 排除特定文件
find . -name "*.jpg" -o -name "*.png" # 或条件
|
性能优化
1
2
| find . -maxdepth 2 -name "*.txt" # 限制搜索深度
find . -mindepth 3 -name "*.txt" # 设置最小深度
|
总结
| 场景 | 命令 |
|---|
| 按名称 | -name "*.txt" |
| 按类型 | -type f/d/l |
| 按时间 | -mtime +/-n |
| 按大小 | -size +/-nM |
| 执行命令 | -exec cmd {} \; |
| 限制深度 | -maxdepth n |
Comments