查找系统上预先建立的文件索引数据库 /var/lib/mlocate/mlocate.db
locate查找事先依赖于先构建的索引,索引的构建是在系统较为空闲时自动进行(周期性任务),或管理员手动更新数据库(updatedb)
索引构建过程需要遍历整个根文件系统,极消耗资源.
工作特点:
安装locate命令 yum install mlocate 初始化 sudo updatedb
选项 | 说明 |
-i | 忽略大小写 |
-n | 只列出符合条件的前几个 |
-r | 支持正则表达式 |
实施查找工具,通过遍历指定路径完成文件查找
特性
基本语法: find [OPTION] .... [查找路径] [查找条件] [处理动作]
-maxdepth level 最大搜索目录深度,指定目录为第1级 -mindepth level 最小搜索目录深度
-name "文件名称" 根据文件名查找支持使用glob通配符 -iname "文件名称" 不区分字母大小写 -inum n 按inode号查找 -samefile name 相同inode号的文件 -links n 链接数为n的文件 -regex "PATTERN" 以PATTERN匹配整个文件路径字符串,而不仅仅是文件名称
-user USERNAME 查找属主为指定用户(UID)的文件 -group GRPNAME 查找属组为指定组(GID)的文件 -uid UserID 查找属主为指定的UID号的文件 -gid GroupID 查找属组为指定的GID号的文件 -nouser 查找没有属主的文件 -nogroup 查找没有属组的文件
-type TYPE: f: 普通文件 d: 目录文件 l: 符号链接文件 s:套接字文件 b: 块设备文件 c: 字符设备文件 p: 管道文件
-size [+|-]#UNIT 常用单位:k, M, G,c(byte) 例如:-size 2k 匹配取值为(1k~2k) -size -5k 取值范围为(0-4k包括5k) -size +5k 取值范围为(5k+ 不包括5k)
以"天"为单位 -atime [+|-]# 读取时间 #: [#,#+1]次 +#: [#天以上] -#: [0,#不包括#天] -mtime 修改时间 -ctime 状态更改时间 以"分钟"为单位 -amin -mmin -cmin
-perm # 例如: -perm 600 /600 或者模糊匹配 -602 other权限位有读权限才会匹配
-print 打印输出默认 -ls 显示详细信息 -delete 删除匹配的文件 -fls file 匹配到的文件重定向到指定的文件中 -ok COMMAND {} \; 对每个文件指定COMMAND命令,每个文件需要交互用户确认 -exec COMMAND {} \; 类似-ok,不需要用户交互确认.
与:-a 或:-o 非:-not, !
1. 使用locate忽略大小写查询 password文件 2. 使用find查询/下所有没有属主属组的文件 3. 使用find查询属主为root 属组不为test 任意一个权限位包含777的链接文件 4. 使用find 找到 hh1-10 文件并删除 5. 使用find 找到/var/log/ 下面类型为普通文件,七天之前的所有文件按照修改日期查询
答案
1. 使用locate忽略大小写查询 password文件 locate -i password 2. 使用find查询/下所有没有属主属组的文件 find / -nouser -nogroup 3. 使用find查询属主为root 属组不为test 任意一个权限位包含777的链接文件 find / -user root -not -group test -perm /777 -type l 4. 使用find 找到 hh1-10 文件并删除 find / -iname "hh*" -exec rm -rf {} \; 5. 使用find 找到/var/log/ 下面类型为普通文件,七天之前的所有文件按照修改日期查询 find /var/log/ -type f -mtime +7
原文:https://www.cnblogs.com/yanshicheng/p/12323828.html