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 09:24
下一篇 2016-08-15 09:24

相关推荐

  • 第十九周作业

    1.描述tomcat的架构 tomcat服务器是一种Servlet/jsp容器,更实质性的说是Servlet容器,因为jsp最终还是被编译成servlet来执行的。而对于servlet来说,其最长见的用途是扩展java web服务器功能,为来自web客户的请求提供服务。它完全运行在java虚拟机上。由于它的运行在服务器端,因此他的运行不依赖于浏览器。 tom…

    2017-07-11
  • drbd+corosync+pacemaker

    存储分类: DAS:直接附加存储;例如ide,sata,scsi,sas等 NAS:网络附加存储;即文件级别共享存储;例如nfs等 SAN:存储区域网络;即块级别共享存储;例如ip-san,fc-san   共享存储选型比较: SAN性能优良,价格昂贵; NAS性能基于文件系统级别,性能低下; 因此,另一个DRBD诞生,全称为分布式复制块设备,Di…

    Linux干货 2017-11-13
  • 用一条命令’pwd’判断并证明系统命令的执行顺序。

    一、命令分类        在Linux系统中命令分为两类:            1.内部命令:shell buildin 每次启动系统都会重新加载入内存。        2.外部命令:即某目录下的…

    Linux干货 2017-09-03
  • 磁盘管理

    1、设备文件 设备文件:关联至一个设备驱动程序,进而能够跟与之对应硬件设备进行通信 设备号码: 主设备号major number,标识设备类型 次设备号minor number,标识同一类型下的不同设备 [root@localhost ~]# ll /dev/sd* brw-rw—-. 1 root disk 8,  0 Aug 25 …

    Linux干货 2016-09-01
  • linux用户与用户组详解

    LINUX用户与用户组详解     1,用户和用户组文件   在linux中,用户帐号,用户密码,用户组信息和用户组密码均是存放在不同的配置文件中的。分别是 passed gpassd shadow group 中。   在linux系统中,所创建的用户帐号和其相关信息(密码除外)均是存放在/etc…

    Linux干货 2017-07-22
  • shell脚本作业

    1、编写脚本/root/bin/systeminfo.sh,显示当前主机系统信息,包括主机名, IPv4地址,操作系统版本,内核版本,CPU型号,内存大小,硬盘大小。 脚本代码 #!/bin/bash #author:wzc         echo Hostname:…

    Linux干货 2016-08-15

评论列表(1条)

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

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