Linux shell 学习笔记 之 find命令的使用

Linux shell 学习笔记 之 find命令的使用

     今天我们来谈谈Linux下find命令的使用,find命令常用于在unix/linux 下进行文件的查找。

    

    一.命令的工作方式:

       find命令的工作方式:沿着文件的层次结构向下遍历,当匹配到符合条件的文件,则执行相应的操作。

  

    二 find命令的使用

      1.列出指定目录下的所有文件以及文件夹

 

         $  find basepath              # basepath 即为要查找的位置,find 命令会从该位置向下查找。

          例如  find  /home/lyf  -print   #打印出/home/lyf 目录下的所有文件和目录列表

         -print 选项指明打印出匹配文件的文件名(路径)

 

 

     2.根据文件名进行搜索

 

        $ find  basepath -name "*.txt" -print     #查找basepath及其子目录下所有txt格式的文件列表

         -name 选项的参数指定了文件名所必须匹配的字符串。

          除了使用name选项还可以使用-iname选项

         -iname选项与-name选项类似,但在进行查找匹配的时候会忽略掉大小写。

         -path的参数可以使用通配符来匹配文件路径或文件

         find还可以使用“!”否定参数的含义

          $ find  basepath !  -name  "*.txt"  -print             #查找basepath及其子目录下所有不是txt格式的文件列表.

 

 

        3.按照目录的深度进行搜索

 

           $ find  basepath   -maxdepth   2  -type  -f  -print       #最多向下遍历两级子目录

           $ find  basepath   -mindepth    2  -type  -f   print       #从当前目录的2层子目录中开始遍历

           find命令在使用的时候会遍历所有的子目录,在这里我们可以采用maxdepth与mindepth限制进行遍历的深度。

 

        4.按照文件的类型进行查找

 

            我们知道在unix/linux下系统将一切都视为文件,然而文件也具有不同的类型,如普通的文件,字符设备,目录,块设备等等。

            在使用find命令的时候我们可以使用-type 选项对文件进行相应的过滤。

             $ find  basepath   -type  d  -print      #只列出所有的目录

             $ find  basepath   -type  f   -print      #只列出所有的文件

            $ find  basepath   -type  l   -print      #只列出所有符合链接

            $ find  basepath   -type  c   -print     #只列出所有的字符设备

            $ find  basepath   -type  b  -print      #只列出所有的块设备

             $ find  basepath   -type  s   -print     #只列出所有的套接字

             $ find  basepath   -type  p  -print      #只列出所有的FIFO

 

         5.按照文件的时间进行查找(包括文件最后被访问的时间atime,文件最后被修改的时间mtime,文件元数据改变时间ctime)

 

            先对这几个时间说说

            atime(访问时间):即用户最近一次访问文件的时间

            mtime(修改时间):即文件内容最后一次被修改的时间

            ctime(变化时间):文件元数据(metadata,如权限或所有权)最后一次被改变的时间。

            选项 -atime,-mtime,-ctime可以作为find命令的时间参数,它们可以使用整数值的形式给出,单位为天,这些值可以带有符 

            号 -(小于),+(大于).

            $ find basepath  -type  f  -atime  +6  -print      # 列出访问时间超过6天的所有文件

            $ find basepath  -type  f  -atime    6  -print      #列出访问时间恰好为6天的所有文件

            $ find basepath  -type  f  -atime  -6   -print      #列出访问时间在6天前的所有文件

            -mtime 与-ctime选项与 -atime选项使用方法相同。

           除了使用基于单位为天的参数选项 -atime ,-ctime,-mtime 还可以使用基于分钟的计数单位如

            -amin(访问时间),-mmin(修改时间),-cmin(改变时间)  这些选项都是基于分钟计数的.

            除了使用上述的选项外在使用find命令的时候还可以使用-newer选项,使用-newer,我们可以指定一个用于比较时间戳的参考

            文件,然后找出比参考文件更新的(更长的修改时间)所有文件。

            $ find  basepath  -type  f  -newer   a.txt  -print    # 找出比a.txt 修改时间更长的所有文件             

         

           6.基于文件的大小进行查找,在使用find命令的时候我们可以按照文件的大小进行查找。

 

            $ find  basepath  -type f  -size +2k    #列出所有大于2k的文件

            除了k 之外还有如下的参数可以供选择:

            b     块(512字节)

            c      字节

            w     字(2字节)

            k      千字节

            M      兆字节

            G       千兆字节

 

            7.基于文件的权限和所有权进行匹配。

       

             $  find   basepath  -type   f    -perm   644   -print     #列出目录下文件权限为644 的所有文件

              也可以按照文件的所有权进行文件的匹配

             $  find    basepath  -type   f   -user   root    -print     #列出目录下root用户所拥有的所有文件

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值