Linux实现文件的查找:
locate
find
locate查找:
原理:
在Linux,每天晚上12:00会将系统中的文件和路径记录到数据库中
在查找的时候,会直接扫描数据库,来找文件的位置
优点:
查看速度快
缺点:
准确度不足
功能单一
find命令
原理:在系统中逐一对比文件,检查文件是否是匹配的文件,会在根目录下一层一层的查找
优点:
非常准确
功能强大
缺点:
慢
格式:
find 路径 匹配模式 文件名
匹配模式:
根据文件名查找:
-name 文件名:根据文件名查找
-iname 文件名:根据文件名查找(忽略大小写)
案例:在/root下查找1.txt文件
find /root -name 1.txt
文件名里面可以有通配符
案例:查找文件名包含a的文件
find / -name "*a*"
根据属主来查找文件
-user 文件名
-uid uid号
案例:查找属主是tom的文件
find / -user tom
案例:查找uid是1001的文件
find / -uid 1001
根据数组:
-group 属组名
-gid gid
案例:查看文件属组是root的文件
find / -group root
案例:查看gid是0的文件
find / -gid 0
查看没有属主的文件
-nouser
查看没有属组的文件
-nogroup
根据文件的类型来查找
-type 文件类型
案例:查找文件类型是目录的文件
find / -type d
文件类型:
f:一般文件
d:目录文件
l:套接字
c:字符设备文件
b:块设备文件
根据文件大小来查找:
-size 大小值
大小值:
+nM 大于nM
-nM 小于nM
案例:在根下找文件小于1M的文件
find / -size +1M
b:比特位,位
B:字节 1B=8b
KB:千字节 1KB=1024B
组合条件
-a:且
-o:或
-not:非
案例:查找当前目录下的文件名是1.txt且是目录的文件
find ./ -name 1.txt -a -type d
案例:查找当前目录下不是目录的文件
find ./ -not -type d
案例:查看当前目录下是目录文件或者是一般文件的文件
find ./ -type d -o -type f
根据时间戳进行查找:
-mtime [+|-]n (单位:天):修改的时间
案例:在一天之内修改过的文件
find / -mtime -1
-ctime [+|-]n (单位:天):状态改变的时间
find / -ctime -1
-atime [+|-]n (单位:天):访问的时间
案例:3天之前那一天访问过的文件
find / -atime 3
说明:
无符号:指定一个具体时间
+:指定时间之前的所有时间
-:指定时间之内的所有时间