find--命令基础
文章目录
- `find` 命令基本语法
- 常用查找路径
- 常用查找条件
- 1. 按名称查找
- 2. 按类型查找
- 3. 按大小查找
- 4. 按时间查找
- 5. 按权限查找
- 6. 按用户/组查找
- 常用动作(-exec / -delete / -print)
- 1. 执行命令
- 2. 删除匹配文件
- 3. 只打印结果
- 进阶用法
- 1. 多条件组合
- 2. 限制查找深度
- 3. 排除目录
- 实用示例
find
命令基本语法
find [查找路径] [查找条件] [查找动作]
常用查找路径
.
:当前目录/
:从根目录开始查找~/
:从当前用户主目录查找
常用查找条件
1. 按名称查找
find . -name "filename"
find . -name "*.log"
find . -iname "*.jpg" # 忽略大小写
2. 按类型查找
-type f
:普通文件-type d
:目录-type l
:符号链接
find . -type f
find /var/log -type d
3. 按大小查找
+100M
:大于 100MB-10k
:小于 10KB100c
:恰好 100 字节
find . -size +1G # 大于 1GB
find . -size -500k # 小于 500KB
4. 按时间查找
-atime
:访问时间(天)-mtime
:修改时间(天)-ctime
:状态改变时间(天)
find . -mtime -3 # 3 天内修改过
find . -atime +7 # 超过 7 天未被访问
5. 按权限查找
find . -perm 644
find . -perm -4000 # 有 SUID 位的文件
6. 按用户/组查找
find . -user root
find . -group www-data
常用动作(-exec / -delete / -print)
1. 执行命令
find . -name "*.log" -exec rm -f {} \;
解释:
{}
:表示查找到的文件名\;
:命令结束标志
2. 删除匹配文件
find . -name "*.tmp" -delete
3. 只打印结果
find /etc -type f -name "*.conf" -print
进阶用法
1. 多条件组合
find . -type f \( -name "*.log" -o -name "*.tmp" \)
2. 限制查找深度
find . -maxdepth 2 -name "*.sh"
find . -mindepth 1 -maxdepth 1
3. 排除目录
find . -path "./exclude_dir" -prune -o -name "*.py" -print
实用示例
需求 | 命令 |
---|---|
查找大于 100MB 的日志文件 | find . -name "*.log" -size +100M |
删除 30 天前修改的 .bak 文件 | find . -name "*.bak" -mtime +30 -delete |
查找当前目录下一级目录中所有 .py 文件 | find . -maxdepth 1 -name "*.py" |
查找所有 SUID 程序 | find / -perm -4000 -type f 2>/dev/null |