利用find查找指定的内容属于实时查找,匹配精确,速度快,所以熟练掌握find的使用,对我们是很有帮助的

find的基本语法格式:

      find  [查找位置]  [查找标准]  [处理动作]

查找位置:默认为当前目录

查找标准:默认为查找指定目录下的所有文件

处理动作:显示到标准输出,

查找标准

文件名

  -name  "文件名称" : 根据文件名查找,支持glob(文件名通配:*,[],?)

[root@localhost ~]# find /etc/ -name "ifcfg-eth0"/etc/sysconfig/network-scripts/ifcfg-eth0

 -iname "文件名称",根据文件名查找,不区分大小写

[root@localhost ~]# mkdir ABC abc aBc[root@localhost ~]# find -iname "abc"./ABC./abc./aBc

文件的属主、属组

    -user     USERNAME    :    根据属主查找

    -group    GROUP        :    根据属组查找

    -uid      UID                :    根据UID查找

    -gid      GID                :    根据GID查找

     -nouser                      :    查找没有属主的文件

      -nogroup                   :   查找没有属组的文件

1、查找/var目录下属主为root并且属组为mail的所有文件;find /var -user root -group mail2、查找/usr目录下不属于root,bin,或student的文件;find /usr -not \( -user root -o -user bin -o -user student \)find /usr -not -user root -a -not -user bin -a -not -user student

文件类型

   -type

        f: 普通文件

        d: 目录

        b: 块设备

        c: 字符设备

         l: 符号链接

        p: 命名管道

        s: 套接字文件

查找当前目录下类型不是目录,而且没有属主的文件find / -not -type d -a -nouser

按文件大小查找    

-size +|- #单位

一般使用“+”、“-”号设置超过或小于指定的大小作为查找条件

常用的容量单位包括k(注意是小写)、M、G。

5、查找/etc目录下大于1M的文件,并将其文件名写入/tmp/etc.largefiles文件中;find /etc -size +1M -exec echo {} >> /tmp/etc.largefiles \;

文件修改时间

        -atime   [+|-]#   :访问时间,默认为天,#表示#天的这个时间点,+#表示至少有#天没访问,  -#表示#天之内没访问

         -mtime [+|-]#  :  修改时间,#表示#天的这个时间点没有被修改,+#表示至少有#天没有修改 ,  -#表示#天之内没有修改

         -ctime   [+|-]#   : 改变时间,#表示#天的这个时间点没有被改变,+#表示至少有#天没有被改变 ,  -#表示#天之内没有被改变

        -amin    [+|-]#    : 时间为分钟,#表示#分钟的这个时间点没有被访问,+#表示至少有#分钟没有被访问 ,  -#表示#分钟之内没访问

         -mmin  [+|-]#   :   时间为分钟,#表示#分钟的这个时间点没有被修改,+#表示至少有#分钟没有被修改 ,  -#表示#分钟之内没有被修改

        -cmin    [+|-]#   : 时间为分钟,#表示#分钟的这个时间点没有被改变,+#表示至少有#分钟没有被改变 ,  -#表示#分钟之内没有被改变

查找/etc目录下最近一周内内容修改过且不属于root及student用户的文件;find /etc -mtime -7 -a -not -user root -a -not -user studentfind /etc -mtime -7 -a -not \( -user root -o -user student \)

文件权限

-perm  [+|-] MODE  

        不带[+|-]表示精确权限匹配,

        +表示任何一类用户的任何一位权限匹配

         - 表示每类用户的每位权限都匹配

查找/etc目录下所有用户都没有写权限的文件,显示出其详细信息;find /etc -not -perm +222

     -print: find命令将匹配的文件输出到标准输出。

       -exec: 指定后面要执行的命令,相应命令的形式为'command' {  } \;,注意{   }和\;之间的空格

     

# 在当前目录下查找除目录以外的所有类型的文件 ,并打印出来[root@localhost test]# find . ! -type d –print#查找root目录下的以log结尾的文件,将其复制到test目录下。[root@localhost test]# find /root/ –name “*log” –type f –exec cp {} /root/test/ \;#通过-exec参数指定后面要执行的命令,{}表示将查找到的内容全部复制,\;表示命令的结束#长格式显示test下的普通文件[root@localhost test]# find . -type f -exec ls -l {  } \;#删除test下大小为0的文件[root@localhost test]# find ./ -size 0 -exec rm {} \;#在当前目录中查找所有文件名以.conf结尾、更改时间在5日以上的文件,并删除它们,只不过在删除之前先给出提示[root@localhost test]# find . -name "*.conf"  -mtime +5 -ok rm {  } \;