locate,find文件查找

locate | find


*** locate 路径中包含字符串 即匹配;

     -n#     指定显示结果前几个

     -b      只匹配路径名中的基名    

     -c      统计符合条件的文档数量

     -r BRE    可使用正则表达式

    依赖于已建立的数据库  速度较快  类似whatis搜索实现  

    数据库:

        系统自动周期实现

       updatedb 手动更新数据库

       索引构建极消耗资源 建议在空闲时

    特点:

        速度较快  模糊查找  !非实时查找

locate ./  *.repo

本目录下.repo结尾的文件或目录

*** find [OPTIONS] [查找起始路径][查找条件][处理动作]

     起始路径:指定目录下搜索 默认当前目录;

     查找条件:指定查找标准, 文件名 大小 类型等

     查找动作:对匹配到的对象进行的操作 默认为输出至标准输出 输出至屏幕

    特点:

        查找速度略慢    精确查找    实时查找

    查找条件:

    表达式:选项;标准

        标准: 执行结果为布尔值

  查找 链接目录下的文件    需要 /.*/   以 / 结尾

     1.根据文件名查找:      支持通配符

         -name "patt"               find /etc -name  passwd[[:alnum:]]

         -iname "patt"不区分大小写      find /etc -iname *passwd

         -inum #  按inode号查找

         -samefile file  相同inode号的文件 

         -links n      链接数为n的文件 

         -regex "PATT":  匹配整个文件路径字符串,不仅仅是文件名称

     2.根据属主属组查找:    find /testdir -uid=1000

         -user   USER  ==>  -uid UID  属主 为指定用户 的文件

         -group GROUP ==>  -gid GID  属组 为指定组 的文件

             存在 用户被移除 文件无属主的情况

         -nouser 查找 无属主的文件       find /testdir -nouser

         -nogroup 查找 无属组的文件

]#find /testdir -user zjj -type p

    /testdir下 属主为zjj的 管道文件

]#find /tmp -not \( -user root -o -iname "*zz*"\)

    /tmp 目录下 属主不为root 且 基名不包含zz的文件

     3.根据类型查找: find /dev -type s -ls

      -type TYPE

         b: 块设备文件

         c: 字符设备文件

         d: 目录文件

         f: 普通文件

         l: 符号链接设备 软链接

         p: 管道文件

         s: 套接字文件

     4.文件大小查找:

        -size [+|-]#UNIT

             常用单位:K,M,G 相对 单位精确查找

    

            #UNIT:(#-1,#]

            -#UNIT:[0,#-1]

            +#UNIT:(#,∞)

]#find /tmp -size +10K

    /tmp下大于10K的文件  11K-∞

     5.根据时间戳查找:

      以 天   为单位:

         -atime [+|-]# 

             #:[#,#-1)   前 第3天

             -#:(#,0]    前 3天以内

             +#:(∞,#-1)  3天之前

         -mtime

         -ctime

    

      以 分钟 为单位

         -amin

         -mmin

         -cmin

]#find /etc -mmin -3

    3分钟内修改过的文件

 

     6.根据权限查找:

        -perm [/|-] mode      mode 精确查找    

]#find -perm 421

    查找权限为421的文件

        -mode 任何一类用户(u,g,o)的 每一位(r,w,x)都要有对应权限

]#find ./ -perm -624

    文件权限包含mode即匹配

        /mode 任何一类用户(u,g,o)的 任何一位(r,w,x)符合条件即满足

]#find ./ -perm /124

    匹配当前目录u=1 或g=2 或o=4 的文件

    满足其中之一即匹配

]#find ./ -perm /011

    不管u权限 g或o有写权限即匹配

===========

    组合标准:

        与 -a  默认的逻辑

        或 -o 满足之一则匹配

        非 -not,!

    处理动作:

        -print 输出至标准输出

        -ls 类似对查到的文件执行 ls -l 输出文件详细信息

find ./ -d zjj -amin -5 -not -perm /222 -ls

    

        -delete 删除查找到的文件!

        -fls /PATH 将文件详细的信息 保存至指定文件

        -ok CMD {} \; 对查找到的 每个文件执行CDM命令 会逐条要求确认

            固定格式\; {}表示查到的所有文件

        -exec 不交互 直接执行

]#find ./ -nouser -a -nogroup -ok chown zjj:zjj {} \;

     查找当前目录下 无属主无属组的文件 全部添加属主属组zjj

-exec CMD {} \; 相对-ok 无确认环节 直接执行CMD

]#find ./ -perm /002 -exec mv {} {}.danger \;

    当前目录下 o有写权限的 文件名加上.danger后缀

!find查找到所有文件后会 将结果一次行传递给命令,有些命令不能接受过长的参数

找到的文件过多会导致命令执行失败可用  find …| xargs CMD

  xargs把一个数据流分割为一些足够小的块,以方便过滤器和命令进行处理

练习:

1、查找/var目录下属主为root,且属组为mail的所有文件

]#find /var -user root -group mail

2、查找/var目录下不属于root、lp、gdm的所有文件

]#find /var -not  \( -user root -o -user lp -o -user gdm \)

3、查找/var目录下最近一周内其内容修改过,同时属主不为 root,也不是postfix的文件

]#find /var -mtime -7 -not \( -user root -o -user postfix \)

4、查找当前系统上没有属主或属组,且最近一个周内曾被访 问过的文件

]#find / \( -nouser -o -nogroup -atime -7 \) -ls

5、查找/etc目录下大于1M且类型为普通文件的所有文件

]#find /etc -size +1M -type f

6、查找/etc目录下所有用户都没有写权限的文件

]#find /etc -not -perm /222

7、查找/etc目录下至少有一类用户没有执行权限的文件

]#find /etc -not -perm -111

8、查找/etc/init.d目录下,所有用户都有执行权限,且其它 用户有写权限的文件

]#find /etc/init.d/ -perm -113

原创文章,作者:Jasper,如若转载,请注明出处:http://www.178linux.com/35366

(0)
JasperJasper
上一篇 2016-08-15
下一篇 2016-08-15

相关推荐

  • N26-博客作业-week2

    1、Linux上的文件管理类命令都有哪些,其常用的使用方法及其相关示例演示。   cp:copy 复制文件和路径 cp [OPTION]… [-T] SOURCE DEST cp [OPTION]… SOURCE… DIRECTORY cp [OPTION]… -t DIRECTORY SOURCE&…

    Linux干货 2017-02-12
  • 第三周作业

    第三周  文本处理工具:             linux上文本处理三剑客:                      grep、egrep、fgrep:文本过滤工具(模式pat…

    Linux干货 2016-12-18
  • 任务计划管理

    一:单一工作调度:at命令       列出在指定的时间和日期在计算机上运行的已计划命令或计划命令和程序。必须正在运行“计划”服务才能使用 at 命令。 示例: [root@CentOS 6 ~]#/etc/init.d/atd restart   启动服务 …

    Linux干货 2016-09-12
  • linux发展编年史

    1965年,Bell实验室、MIT、GE(通用电气公司)准备开发Multics系统    1969年,Ken Thompson(B->C语言)利用汇编语言开发了FIle Server System(Unics,即Unix的原型)     为游戏开发出最多…

    Linux干货 2016-10-18
  • HAProxy基于KeepAlived实现Web高可用及动静分离

    前言 软件负载均衡一般通过两种方式来实现:基于操作系统的软负载实现和基于第三方应用的软负载实现。LVS是基于Linux操作系统实现的一种软负载,而HAProxy则是基于第三方应用实现的软负载。HAProxy相比LVS的使用要简单很多,但跟LVS一样,HAProxy自己并不能实现高可用,一旦HAProxy节点故障,将会影响整个站点。本文带来的是HAProxy基…

    Linux干货 2015-06-25
  • Linux nginx服务之反向代理

                       Linux nginx服务之反向代理 Nginx服务之反向代理: GSLB:Global Service LB 全局服务负载均衡: SLB:Service LB 应用程序发布: 灰度模型:   ngx_http_…

    系统运维 2016-11-18

评论列表(1条)

  • 马哥教育
    马哥教育 2016-08-19 10:39

    总结的很好,find命令是以后工作或笔试中常出现的考点,需要熟练掌握。