• find命令复习与总结


    写在前面

      在面试时被问到了有关find命令的问题,由于时间长了有一些遗忘,今天重新的复习一下。

    一、find语法结构及解释

       语法:

        find   [查找路径]    [查找条件]      [找到后的处理动作]

      查找路径:

        具体要在哪里找,例如/ ,/tmp目录,默认为本目录下,可以不写,或者使用'.'来代替本目录。

      查找条件:

        查找的标准,可以是文件名、权限、日期等条件

      处理动作:

        找到制定文件后后续要作何操作,默认为打印输出,不写或-print均为打印输出。

    二、查找条件

    接下来介绍一些常用到的查找条件

      1、按照文件名查找

         -name "文件名" ,例如:-name '*.txt"    查找所有txt结尾的文件,区分大小写

         -iname "文件名", 例如:-inane “*.Txt”   查找所有txt结尾的文件,不区分大小写。

      2、按照文件类型查找

        -type  "TYPE"

          TYPE可以为

            f : 普通文件

            d: 目录文件

             l: 链接文件

             s:  套接字文件

             b:块文件

      3、按照文件内容修改日期查找:

        以天为单位: -mtime  +# ; 例如:-mtime +7  表示7天前修改的文件

        以分钟为单位: -mmin  +#  ;例如:-mmin +10   表示10分钟前修改的文件

      4、按照属主属组查找:

          -user USERNAME : 查找属主为指定用户的文件。

                  -group GROUPNAME:  查找属组为指定用户的文件。

                  -uid  UserID:查找指定属主uid号的文件

                  -gid GroupID:查找指定属组uid号的文件

      5、按照权限查找:

         -perm  MODE 例如:-perm 644 :按照644权限精确匹配查找文件。

        在权限面前还可以加+-号来模糊匹配,但有些麻烦,且用的不多,在此暂不做考虑。

      以上就是最常用的查找条件,当然这些条件在同一类型下也可以同时的出现多个,进行逻辑上的与或非的组合查找。

      当多个查找类型的条件同时出现时,默认为与,例如-type f -name '1.txt' -perm 644,则要查找权限为644,且文件名为1.txt的普通文件。 

      逻辑符号的表示

         与:-a  或:-o  非:!、-not

        例1:

           查找本目录下以txt或csv结尾的普通文件

              find . ( -name "*.txt" -o -name "*.csv" ) -print

        例2:

           查找本目录下没有属组也没有属主的普通文件

                 find   .   ( -nouser -a -nogroup  )  -print

        例3:

           查找本目录下文件名不是以txt结尾的普通文件   

                find . ! -name "*.txt" -print

        

        附加逻辑技巧: 

              !A -a  !B  等价于  ! (A -o  B)
              !A -o  !B  等价于  ! (A -a  B)
    

    三、后续动作

      查找完成后,需要有后续动作,因此下面来讨论“处理动作”

    -print

    (默认)打印到屏幕上,可以不写

    -ls

    相当于将找到的结果做“ls -l "操作

    -delete

    删除找到的文件

    -exec COMMAND {} ;

    将找到的文件用shell命令进行处理。

    例如:-exec mv {} {}_new ;    将查找到的文件的文件名后面加上"_new" ,此处{}代表的是找到的所有全体内容。

      注意:

          find命令会将找到的内容一次性的传递给后续的动作,而不是一个一个的传递。因此有一些shell命令不能一下子接受过多的参数而导致其失效。用下面方式可以避免此类情况的发生。

           find   | xargs  COMMAND
    

        

    四、简单练习

      1、查找当前目录内文件以txt或dbf文件结尾的普通文件    

       find .   -name "*.txt" -a -name "*.dbf"

      2、查找/var目录下属主为root,且属组为mail的所有文件或目录

       find  /var -user root -a -group mail

      3、查找/usr目录下属主不属于root、bin、hadoop的所有文件或目录

       find /usr   ! -user root -a ! -user bin -a  ! -user hadoop  

      4、查找/etc目录下最近一周内内容没有被修改过,同时属主不为root,也不是hadoop的文件,删除这些文件    

       find /etc -mtime +7 -a  -not ( -user root -o user hadoop) -delete

      

        

             

        

      

  • 相关阅读:
    网上图书商城项目学习笔记-001工具类测试
    SpringMVC,MyBatis商品的增删改查
    3.Spring-用反射模拟IoC
    2.Sprng-IoC-Java反射例子
    1.Spring IoC简单例子
    HTML5 文件API(二)
    HTML5 文件API(一)
    HTML5 编辑 API 之 Range 对象(二)
    hdu 5384 Danganronpa
    hdu 3065 病毒侵袭持续中
  • 原文地址:https://www.cnblogs.com/liuxiantong/p/12442762.html
Copyright © 2020-2023  润新知