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

相关推荐

  • 马哥教育网络班22期+第1周课程练习

    第1周课程练习 一、描述计算机的组成及其功能。     CPU (运算器+控制器), 存诸器(内存与外部存储),输入输出设备。      运算器:对数据进行处理(包括算述运算与逻辑运算)。      控制器:负责从存储器取出指令,按指令的要求发出控制信号,使各…

    Linux干货 2016-08-15
  • 第三周博客作业

    1、列出当前系统上所有已经登录的用户的用户名,注意:同一个用户登录多次,则只显示一次即可。 2、取出最后登录到当前系统的用户的相关信息。 3、取出当前系统上被用户当作其默认shell的最多的那个shell。 4、将/etc/passwd中的第三个字段数值最大的后10个用户的信息全部改为大写后保存至/tmp/maxusers.txt文件中。 5、取出当前主机的…

    Linux干货 2017-02-06
  • 自制linux和编译内核

    自制linux:(1)  分区并创建文件系统  fdisk /dev/sdb分两个必要的分区  /dev/sdb1 对应/boot /dev/sdb2 对应根  /mkfs.ext4 /dev/sdb1mkfs.ext4 /dev/sdb2  挂载bootmkdir /mnt/boot 子目录必须为bootm…

    Linux干货 2017-04-02
  • linux命令的使用格式

    Linux命令的一般格式为: [root@node1 ~]#command [选项] [参数] 1、ifconfig 设备 参数 参数: up:启动指定设备 down:关闭指定设备 arp:指定设备是否支持ARP协议 -a:显示全部接口信息 例如:[root@node1 ~]#ifconfig eth0 up #启动eth0网卡 2、echo打印 &nbsp…

    Linux干货 2016-09-17
  • N26-第六周作业

    vim编辑器的使用 编辑模式:默认模式编辑模式–>输入模式;i:insert,在光标所在处输入;a:append,在光标所在处后方输入o:在光标所在处下方打开的一个新行;光标处在行首;I:在光标所在行的行首输入A:在光标所在处的行尾输入;O:在光标所在处的上方打开一个新行; 输入模式–>编辑模式ESC 编辑模式&#8211…

    Linux干货 2017-03-13
  • LAMP

    备注:本次安装是采用的系统自带的yum源进行安装的 第一步:安装Apache 1:安装apache,命令如下: yum install -y httpd   2:修改httpd.conf,修改ServerName的域名,具体步骤如下: 使用vi编辑器打开apache配置文件,命令如下: vi /etc/httpd/conf/httpd.conf 按…

    Linux干货 2017-10-09

评论列表(1条)

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

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