linux 文件查找 (locate 与 find)
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了linux 文件查找 (locate 与 find)相关的知识,希望对你有一定的参考价值。
文件查找
目录
1.locate
2.find
一. locate
locate命令基于数据库db,所以不能实时更新
他有如下的特点:
1.查找速度快
2.是模糊查找(可能搜到了文件,也有可能搜到了目录)
3.是非实时的查找
4.由于权限的原因可能只查找到一部分的文件
locate 参数:
-i 不区分大小写
-n N 只列举前N个项目
-r 支持正则表达式
locate xiaoyu
搜索名称或路径中带有"xiaoyu"的文件
例:
二. find
实时查找工具,通过遍历指定路径完成文件查找
有如下的工作特点:
1.查找速度略慢
2.精确查找
3.实时查找
4.可能只搜索到用户具备读取和执行权限的目录
find [查找路径] [查找条件] [处理动作]
查找路径 :制定具体目标路径,默认为当前目录
查找条件:
1.按搜索层级
-maxdepth level 最大搜索目录深度,指定目录为第一级
-mindepth level 最小搜索目录深度
2.根据文件所属组或所属人
-user UserName 查找文件所属人为指定用户(也可以为UID)的文件
-group groupName :查找文件所属组为指定组(也可以为GID)的文件
-uid UserId :查找属组为指定的UID的文件
-gid GroupId :查找属组为指定的GID的文件
-nouser :查找没有属主的文件
-nogroup :查找没有属组的文件
3.根据文件名和inode查找
-name Name :根据
-iname Nmae :不区分文件名称大小写
可以看到,目录下有三个包含“xiaoyu“的文件,当执行不区分大小写时,只显示了一个文件,find为精确查找
-inum n :按inode号查找
-samefile name :相同inode号的inode文件
-links n :链接数为n的文件
注:这里xiaoyu和XIAOYU inode号相同,故链接数为2. 其他链接数为2的均是目录,因为有 . 和 .. 这两个链接
-regex "PATTERN : 以PATTERN匹配整个文件路径字符串,不仅仅是文件名称
注:-regextype posix-extended 表示支持扩展正则表达式
4.根据文件类型查找
-type TYPE :
f : 普通文件
d: 目录文件
I: 符号链接文件(软链接)
s: 套接字文件
b: 块设备文件
c: 字符设备文件
p: 管道文件
查找/var目录下属主为root,且属组为mail的所有文件
5.组合条件
与:-a
或:-o
非:-not
6.根据文件大小来查找
-size [option]
num :(num-1,num]
-num :[0,num-1]
+num:(num,∞)
查找/etc目录下大于1M且类型为普通文件的所有文件
7.根据时间戳:
以天为单位:
-atime 【num】(访问时间)
num: 【num,num+1】
+num:【num+1,∞】
-num:【0,num)
-mtime (修改时间)
-ctime (文件元数据修改时间)
查找当前系统上没有属主或属组,且最近一个周内曾被访问过的文件
以分钟为单位:
-amin 【num】(访问时间)
num:【num,num+1】
+num:【num+1,∞】
-num:【0,num)
-mmin (修改时间)
-cmin(文件元数据修改时间)
8. 根据文件权限来查找:
-perm 【/ | -】 MODE
MODE: 精确权限匹配
/MODE:任何一类对象中的权限中只要能一位匹配就行(或关系)
当权限为大于等于5时,满足其中任意一项即可。
-MODE:每一类对象都必须同时拥有指定权限(与关系),0表示不关注
例:find -perm 755 匹配当前目录下权限仅为755的文件
find -perm /444 三类对象只要其中一个具有r权限就行
find -perm -444 三类对象每个都要具有r权限才可以
查找/etc目录下所有用户都没有写权限的文件
处理动作:
-print: 默认的处理动作
-ls : 类似ls命令
-delete: 删除查找到的文件
-fls file :查找到的所有文件的长格式信息保存到指定文件中
-ok COMMAND {} \ ; 对查找到的每个文件都执行COMMAND命令,执行之前都会询问用户是否执行
-exec COMMAND {} \ ; 对查找到的每个文件都执行COMMAND命令,执行之前不会询问用户是否执行
{} 用于引用查找到的文件名称自身
参数替换 xargs
当文件很多时,且需要后续的一些操作,搭配管道符就会出错。xargs 可以和管道符搭配,
实现read一些命令,例如:
以上是关于linux 文件查找 (locate 与 find)的主要内容,如果未能解决你的问题,请参考以下文章