find命令详解

find命令是用来在给定的目录下查找符合给定条件的文件

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

  一、OPTIONS参数

    -P、-L、-H:控制软连接的对待方式,用的不多。不介绍了

  二、查找路径

    就是个目录路径,相对和绝对都可以。

  三、查找条件

    (一)、根据名称查找

      -name "PATERN"

      -iname "PATERN" :不区分名称字母大小写

      find命令详解

 

      -regex PATTERN:基于正则表达式的模式查找,匹配的是整个路径,而非单个文件名。

      find命令详解

 

    (二)、根据文件从属关系查找:

        -user USERNAME:查找属主指定用户的所有文件;

        -group GRPNAME:查找属组指定组的所有文件;

 

        -uid UID:查找属主指定的UID的所有文件;

        -gid GID:查找属组指定的GID的所有文件;

 

        find命令详解

 

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

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

        find命令详解

    (三)、根据文件的类型查找:

      -type:根据不同的文件类型筛选

      

f 普通文件
d 目录文件
l 符号链接文件
b 块设备 文件
c 字符设备文件
p 管道文件
s 套接字文件

 

            find命令详解

 

    (四)、根据文件的大小查找:

        -size [+|-]#UNIT

          常用单位:k, M, G

            #UNIT:(#-1, #]

            -#UNIT:[0,#-1]

            +#UNIT:(#, oo)

            find命令详解

            1、1k时:a3只有15个字节,也被算做1k也查询,即条件符合大于0k ( #-1 ),小于等于1k (#)

            2、+1k时:a和a1满足大于1k(#)的条件

            3、-62k时:只有a3满足大于等于0,小于等于 61k(#-1)的要求。

 

    (五)、 根据时间戳查找:

        按照atime(文件的最后访问时间)、mtime(文件的最后修改时间)、ctime(文件最后改变时间)三个变量来查询:

          以天为单位,

          -atime [+|-]#

              #:[#, #-1) :最后访问时间在#天前(大于等于#天前,小于#-1天前)

                    等价于最后访问时间与当前的时间差 大于 (#-1)*24小时,小于等于 #*24小时

              -#:(#, 0] :最后访问时间在#天以内,不包括24小时前的那一刻。

                    等价于最后访问时间与当前的时间差小于 #*24小时

              +#:(oo, #-1] :最后访问时间在#-1天以前的。包括#-1天前

                    等价于最后访问时间与当前的时间差大于等于 #*24小时

                  -mtime

                  -ctime

 

      find命令详解

 

    以“分钟”为单位:

        -amin

        -mmin

        -cmin

 

    -daystart:时间条件的开始先决条件。如果没有的时候,比较的开始时间为当前时间。如果有此参数,则比较的开始时间为当天的23:59:59。

    find命令详解

 

    查询出来的各个文件名称对应时间如下:

    find命令详解

 

文件名 修改时间
服务器当前时间 09/08 17:34
a 09/08 17:20
b 09/07 12:20
c 09/08 13:20
d 09/07 22:20

 

    find命令详解

 

    find命令详解

 

 

    (六)、根据权限查找

        -perm

        -perm [/|-]mode

          mode:精确权限匹配;

          /mode:任何一类用户(u,g,o)的权限中的任何一位(r,w,x)符合条件即满足;9位权限之间存在“或”关系;

          -mode:每一类用户(u,g,o)的权限中的每一位(r,w,x)同时符合条件即满足。9位权限之间存在“与”关系;

          看案例:

          find命令详解

            

          (1):精确查找。就是匹配权限值完全相等的;

          find命令详解

 

          (2):/mode。 只要有一组用户匹配到一个权限即可。

          通俗说:就是属主拥有给定属主权限的某一个,或者数组拥有给定权限的某一个,或者其他用户拥有给定权限的某一个即可。

          find命令详解

          表示属主拥有执行权限

          或者数组拥有写权限,

          或者其他用户拥有写权限

 

          (3):-mode。并且的关系。

          通俗说:就是给定的属主权限必须拥有。并且给定的数组权限必须拥有。并且给定的其他用户权限必须拥有。

 

          find命令详解

          表示属主拥有执行权限

          并且数组拥有写权限,

          并且其他用户拥有写权限

 

        处理动作:

          -print:输出至标准输出;默认的动作;

          -ls:类似于对查找到的文件执行“ls -l”命令,输出文件的详细信息;

          -delete:删除查找到的文件;

          -fls /PATH/TO/SOMEFILE:把查找到的所有文件的长格式信息保存至指定文件中;

          -ok COMMAND {} \; :对查找到的每个文件执行由COMMAND表示的命令;每次操作都由用户进行确认;

          -exec COMMAND {} \; :对查找到的每个文件执行由COMMAND表示的命令;

 

          注意:find传递查找到的文件路径至后面的命令时,是先查找出所有符合条件的文件路径,并一次性传递给后面的命令;

 

            但是有些命令不能接受过长的参数,此时命令执行会失败;另一种方式可规避此问题:

             find | xargs COMMAND

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

(0)
小江小江
上一篇 2016-09-19
下一篇 2016-09-19

相关推荐

  • rsync+inotify实时同步备份数据

    rsync同步 rsync+inotify实时同步备份数据 软件简介: rsync命令简介: rsync命令是一个远程数据同步工具,可通过LAN/WAN快速同步多台主机间的文件。rsync使用所谓的“rsync算法”来使本地和远程两个主机之间的文件达到同步,这个算法只传送两个文件的不同部分,而不是每次都整份传送,因此速度相当快。 rsync是一个功能非常强大…

    Linux干货 2016-10-28
  • shell脚本编写规范

    1 脚本名以.sh结尾,名称尽量见名之意,比如ClearLog.sh Clear_Log.sh clearlog.sh SerRestart.sh Ser_Restart.sh;2 尽量使用UTF-8编码,注释及输出尽量使用英文;3 一般给到执行权限,但一些关于变量的配置文件不用加执行权限;4 执行的时候可以使用bash 执行,或者使用bash -x执行,可…

    Linux干货 2017-04-16
  • 周期性计划任务crond讲解

    crond是Linux或者unix系统的作业调度程序。运用它,在设定的时间段周期性执行某个命令或脚本。下文的例子均在centos 7.3上测试。一、crond组件 如果centos7.3最小化安装,不一定存在crond服务,需要手动安装,安装之后手动启动并设置以后自行开机启动。 主要有cronie、cronie-anacron、crontabs三个程序包。 …

    Linux干货 2017-03-27
  • 通过Nginx来安装一个Discuz

    这次由于时间有限,所以我就没有用编译安装来启动LMP,只有Nginx 是编译安装的 因为是在centos7上面安装的Nginx所以我们这里由于能力有限,暂时不能将其加入开机启动,日后我会进行改进,将其加入开机启动。这里我们给出Nginxd的编译选项及环境   yum groupinstall "Development&…

    Linux干货 2016-10-30
  • 马哥教育网络班22期第5周课程作业

    1、显示当前系统上root、fedora或user1用户的默认shell; cat /etc/passwd | grep ^root | cut -d: -f7 2、找出/etc/rc.d/init.d/functions文件中某单词后面跟一组小括号的行,形如:hello(); …

    Linux干货 2016-12-05
  • find用法及德·摩根定律

    德·摩根定律   奥古斯都·德·摩根首先发现了在逻辑命题中存在着下面这些关系:      非(P且Q)=非P或非Q      非(P或Q)=非P且非Q 上述逻辑命题可以解释为:    not ( P and Q)=not P or not Q    …

    Linux干货 2016-08-18