linux学习笔记6-查找功能
locate 功能弱,速度快
find 功能强,速度慢
locate 【路径】【关键字】
实际上locate命令,是在系统记录文件名的数据库中查找,即/var/lib/mlocate数据库,并不是遍历硬盘来查找,存在以下的问题:刚创建的文件查不到;已经被删掉的文件被找到,原因是记录文件名的数据库每天更新一次,但是可以手动更新 使用updatedb命令
find
find 【查找范围】【查找条件】【动作】
【查找范围】:路径
【查找条件】:文件大小、名字、类型
【动作】:对查找文件做进一步处理
eg:
- 根据文件名查找:find 【路径】 -name 【精确文件名】; find / -name passwd
- 根据文件类型查找:find 【路径】 -type【文件类型】;find / -type d
- d:目录文件
- f:普通文件
- c:字符设备问价
- b:块设备文件
- l:符号链接文件
- s:接口文件类型,网络数据连接中通过接口来监听客户端
- 根据时间属性查找:
- -mtime 和文件内容发生改变时间相关
- find /tmp -mtime -3 -ls 查找tmp目录,往回数3天之内,内容发生改变的文件,ls列出时间戳属性方便查看
- find /tmp -mtime +7 -ls 查找tmp目录,7天之前,内容发生改变文件
- find /tmp -mtime 4 -ls 查找tmp目录,4天前的那一天,内容发生改变的文件
- 其中+n代表n天之前,n代表往回数第n天的当天,-n代表往回数n天之内
- -mmin(用法类似-mtime)
- find /home/stu -mmin -60 -ls 查找stu目录中,前一个小时内容发生改变的文件
- find /home/stu -mmin +120 -ls 查找stu目录中,前2个小时之前内容发生改变的文件
- -ctime 和文件属性修改时间相关
- -cmin 和文件属性修改时间相关
- -atime 和文件被读取和执行的时间有关
- -amin和文件被读取和执行的时间有关
- 根据文件大小进行查找
- -size
- find /tmp -size -3k -ls 查找tmp目录下比3K字节小的文件
- find /tmp -size +100c -ls 查找tmp目录下比100字节大的文件
- find /tmp -size 10M -ls 查找tmp目录下10M大小文件
- -size -1c 1字节
- -size -1k 1024字节
- -size -1M 1024k字节
- -size -1G 1024M字节
- +代表大于,-代表小于,无符号代表等于
- 根据用户或者从属用户组的条件来查找
- find /tmp -user root -ls 查找tmp目录下root用户文件
- find /tmp -uid 500 -ls 查找tmp目录下uid为500的用户文件,UID为500的在linux中是普通用户
- find /tmp -group stu -ls 查找tmp目录下从属于stu用户组的文件
- find /tmp -gid 0 -ls 查找tmp目录下从属于gid为0的用户组文件
- 根据文件权限查找
- find /tmp -perm 754 -ls查找tmp目录下权限为754的文件
- 联合条件查找
- find -a 与
- find -o 或
- find ! 非
- 联合条件需要把所有条件都用括号括起来,左右括号需要跟反斜杠\转义符,前后括号加上转义符部分的前后分别都要用空格隔开
eg:find /tmp \( -size -10M -a -size +5M -atime -10 \) -ls
- 查找后的动作选项 -exec
find /tmp \( -size +1k -a -size -1M -a -mmin -30 -a -type f \) -exec rm -rf{} \;
其中 rm -rf 代表具体的删除动作,{} 代表前面查找到的内容,;在bash中有特殊含义,需要 \ 转义
find /tmp \( -mmin -10 -a -type d \) -ls -exec tar -cf {}.tar {} \;
- 查找后的动作选项 -OK
- 对动作会逐个提示,其他作用和 -exec一致,在删除文件时可以考虑使用
【从善如登,从恶如崩】