您的位置:首页 > 运维架构 > Linux

Linux文件查找之Find详解

2019-07-07 23:23 1371 查看

Linux文件查找之find详解

  • find:实时查找工具,通过遍历指定路径下文件系统层级结构完成文件查找
  • 工作特性:
    查找速度略慢
    实时查找
    精确查找
  • find用法:find [option]...[查找路径] [查找条件] [处理动作]
    查找起始路径:指定具体搜索目标起始路径,默认认为当前目录
    查找条件:指定的查找标准,可以根据文件名,文件类型,从属关系,
    权限等标准进行,默认为找出指定路径下的所有文件
    处理动作:对符合查找条件的文件做出的操作,例如:删除等操作,默认
    为输出至标准输出
  • 查找条件:
    (1)根据文件名查找:
    -name "文件名称":支持使用globbing字符
    -iname"文件名称":查找时忽略字符大小写
    :匹配任意长度的任意字符
    ?:匹配单个字符
    -regex pattern:基于正则表达式查找文件,匹配是整个路径而非其名
    (2)根据文件从属关系查找:
    -user USERNAME:根据文件的属主查找
    -group GROUPNAME:根据文件的属组查找
    -uid UID:查找属主指定的UID的所有文件;
    -gid GID:查找属组指定的GID的所有文件;
    -nouser:查找没有属主的文件
    -nogroup:查找没有属组的文件
    (3)根据文件类型:
    -type TYPE:根据文件类型查找
    f:普通文件
    d:目录文件
    l:符号文件
    b:块设备
    c:字符设备
    s:套接字文件
    p:命名管道
    (4)根据文件大小查找:
    -size [+|-] #UNIT: 常用单位:k,M,G
    #UNIT:(#-1, #]
    -#UNIT:[0,#-1]
    +#UNIT:(#, oo)
    (5)根据时间戳查找:
    按照atime(文件最后访问时间),mtime(文件的最后修改时间),ctime(文件最后改变时间)三个变量来查询:
    以天为单位:
    -atime[+|-]#:
    #:[#, #-1) :最后访问时间在#天前(大于等于#天前,小于#-1天前)
    等价于最后访问时间与当前的时间差 大于 (#-1)24小时,小于等于 #24小时
    -#:[#-1, 0]:最后访问时间在#天以内,不包括24小时前的那一刻。
    等价于最后访问时间与当前的时间差小于 #24小时
    +#:(oo, #]:最后访问时间在#天以前的。包括#-1天前
    等价于最后访问时间与当前的时间差大于等于 #*24小时
    以分钟为单位:
    -amin,-mmin,-cmin
    (6)根据权限查找:
    -perm [/|-] mode:
    mode:精确权限匹配
    /mode:任何一类用户(u,g,o)的权限中任何一位(r,w,x)符合条件即满足,9位权限之间存在“或”关系
    -mode:每一类用户(u,g,o)的权限中每一位(r,w,x)都符合条件即满足,9位权限存在“与”关系
    (7)组合条件查询:
    与:-a,同时满足
    或:-o,满足一个即可
    非:-not,!,条件取反
    -not A -a -not B = -not (A -o B)
    -not A -o -not B = -not (A -a B)
  • 处理动作:
    -print:输出至标准输出(默认)
    -ls:类似于对查到的文件执行"ls -l"
    -delete:删除查找的文件
    -fls /PATH/TO/SOMEFILE:把查找到所有文件的长格式保存至指定文件中
    -ok COMMAND {} \;对查找的文件执行COMMAND表示的命令,,每次操作都由用户进行确认
    -exec COMMAND {} \; 对查找的文件执行COMMAND表示的命令

    注意:find传递查找的文件路径至后面的命令时,是先查找所有符合条件的文件路径,并一次性传递给后面的命令,但是有些命令不能接受过长的参数,此时命令会执行失败,另一种方式可规避此问题:
    find | xargs COMMAND
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: