3.8 KiB
3.8 KiB
1、文件查找概览
Linux 中查找文件时,最常用的命令之一就是 find。它功能非常强,既可以按名称找文件,也可以按类型、属主、权限、时间、大小等多种条件组合查找。
在日常运维中,find 主要用于:
- 定位某个文件或目录
- 查找大文件、旧文件、异常权限文件
- 结合删除、统计、打包等命令做批量处理
2、find 基本格式
find [路径] [条件] [动作]
例如:
find /var/log -name "*.log"
表示在 /var/log 下查找所有 .log 文件。
3、目录深度控制
3.1 -maxdepth
限制最大搜索深度。
find /etc -maxdepth 2 -name "*.conf"
3.2 -mindepth
限制最小搜索深度。
find /data -mindepth 2 -type f
4、按名称和 inode 查找
4.1 -name
按文件名精确匹配查找,区分大小写。
find /tmp -name "test.txt"
4.2 -iname
按文件名查找,不区分大小写。
find /tmp -iname "test.txt"
4.3 -inum
按 inode 编号查找。
find / -inum 123456
这个场景在排查硬链接文件时比较有用。
5、按属主和属组查找
5.1 按用户查找
-user:按用户名查找-uid:按 UID 查找
示例:
find /home -user lzc
find /home -uid 1000
5.2 按组查找
-group:按组名查找-gid:按 GID 查找
示例:
find /data -group devops
find /data -gid 1001
6、按文件类型查找
6.1 -type
常见类型值:
f:普通文件d:目录l:符号链接s:套接字文件b:块设备文件c:字符设备文件p:管道文件
示例:
find /etc -type f
find /var -type d
7、条件组合
find 支持逻辑组合条件:
-a:与(AND)-o:或(OR)-not:非(NOT)
示例:
find /data -type f -a -name "*.log"
find /data \( -name "*.log" -o -name "*.txt" \)
8、按大小查找
8.1 -size
可以按文件大小查找,常见单位:
k:KBM:MBG:GB
示例:
find /var/log -size +100M
表示查找大于 100 MB 的文件。
9、按时间查找
时间条件是 find 的高频用法之一。
9.1 分钟级条件
-amin:按访问时间(分钟)-cmin:按状态变更时间(分钟)-mmin:按内容修改时间(分钟)
9.2 天级条件
-atime:按访问时间(天)-ctime:按状态变更时间(天)-mtime:按内容修改时间(天)
9.3 参考文件比较
-anewer:访问时间比指定文件新-cnewer:状态变更时间比指定文件新-newer:修改时间比指定文件新
9.4 常见示例
查找最近 2 天内修改过的普通文件:
find /var -type f -mtime -2
查找比某个文件更新的文件:
find /etc -type f -newer /tmp/base.txt
查找 2 天内创建或修改的文件,也可以用:
find /var -type f -newermt "2 days ago"
10、常见实战场景
10.1 查找大日志文件
find /var/log -type f -size +500M
10.2 查找空文件
find /data -type f -size 0
10.3 查找最近修改的配置文件
find /etc -type f -mtime -1
10.4 查找某用户拥有的文件
find /home -user lzc
11、小结
find是 Linux 中最强大的文件查找命令之一- 它可以按名称、类型、属主、大小、时间等多条件组合搜索
-type、-name、-size、-mtime是最常用的几类条件-maxdepth和-mindepth能帮助控制搜索范围- 实战中最常见的场景是找日志、大文件、旧文件、异常文件