文本查找 1、locate CentOS7 最小化安装默认没有locate工具,需要安装软件包mlocate 特点: 全系统查找,是根据全系统文件数据库进行的 非实时 模糊匹配 速度快 查找的数据库:/var/lib/mlocate/mlocate.db 手动生成文件数据库:updatedb 选项: -i # 不区分大小写 -n N # 只列出匹配出的前N项 -r PATTREN # 使用正则表达式查找 2、find 特点: 实时查找 精确查找,遍历指定目录中的所有文件完成查找 速度慢 支持许多查找标准 使用格式: find [查找路径] [option] [匹配标准] [查找到以后处理的动作] 查找路径:默认为当前目录 匹配标准:默认为指定目录下的所有文件 处理动作:默认显示到当前屏幕 option: -maxdepth level # 最大搜索目录深度 -mindepth level # 最小搜索目录深度 匹配标准: -name ‘filename' #对文件名作精确匹配 # 支持文件名通配: *:任意长度的任意字符 ?: []: [^]: -iname 'filename' # 文件名匹配不区分大小写 -inum INODE # 按inode号进行查找 -samefile # 查看相同的文件 -links N # 查找链接数为N的文件 -regex PATTERN # 基于正则表达式进行文件名匹配。匹配文件完整路径名,而不是文件名 -user USERNAME # 基于文件属主查找 -group GROUPNAME # 基于属组查找 -uid UID # 基于UID查找 -gid GID # 基于GID查找 -nouser # 查找没有属主的文件 -nogroup # 查找没有属组的文件 -type f # 普通文件 d # 目录 c # 字符设备 b # 块设备 l # 链接文件 p # 管道设备 s # 套接字文件 -size # 默认是单位减1的精确度。比如1024k表示1023k到1024k之间,包括1024k -3k 表示 0-2k 的范围,包括2。+3表示是大于3的范围,不包括3 例如:find -size +10k 表示大于10k的文件,此外支持的单位还有M、G -mtime # 根据文件修改时间查找(天为单位) -ctime # 根据文件改变时间查找(天为单位) -atime # 访问时间(天为单位) -atime +5 # 至少5天前访问 -atime -5 # 距现在5天内 -atime 5 # 5天前,不到6天 -mmin # (分钟为单位) -cmin # (分钟为单位) -amin # (分钟为单位) -perm MODE # MODE是600 | 775 | 777 等数字表示 MODE # 每一类权限中的每一位都匹配则满足(精确匹配) /MODE # 任何一类权限匹配则满足 ---> 或 -MODE # 每一类权限对象中必须至少同时拥有为其指定的权限(精确匹配 )---> 与 注:MODE中出现0的哪一类权限,表示不搜索此类的权限,不关心。 组合匹配标准: -a 且,默认条件 -o 或 -not或者! 非 示例: # 查找没有属组或者没有属组的文件 find /home \( -nouser -o -nogroup \) -ls # 查找属主不是root,名字不是inittab的文件 find /tmp \(-not -user root -a -not -name inittab\) -ls 或者 find /tmp -not \(-user root -o -name inittab\) -ls # 查找/etc/ 下,除/etc/sane.d 目录的其它所有.conf后缀的文件 find /etc -path '/etc/sane.d' -a -prune -o -name "*.conf" #查找除same.d目录和/etc/fonts目录下的所有.conf后缀的文件 find /etc \(-path '/etc/sane.d’ -o –path ’/etc/fonts' \) -a -prune -o name "*.conf" 查找以后处理的动作: -print # 默认动作 -ls # 类似ls -l的形式显示每一个文件的详细 -delete # 删除查找到的文件 -fls /path/to/file # 将查找结果的长格式的内容保存到指定的文件中去 -ok COMMAND {} \; # 对查找到的每个文件都执行COMMAND命令。{}为占位符,表示代替find命令传过来的文件名称 -exec COMMAND {} \; # 不需要确认 示例: # 将在/etc/目录下查找的文件复制到root目录下 find /etc/ -perm 000 -ok cp {} /root \; # 删除tmp目录下权限为0的文件 find . -perm 000 -ok rm -rf {} \; xargs命令 可以代替-ok、-exec用管道符号将find的内容直接送给xargs命令处理