zoukankan      html  css  js  c++  java
  • find命令学习

      1. find命令与locate命令的区别:

        1. locate:
          1. 非实时查找;
          2. 依赖于索引,而索引构建非常占用资源,索引的创建是在系统空闲时系统自动进行,可以用updatedb命令更新索引;
          3. 查找速度快;
          4. 非精确查找;
        2. find:递归地在层次目录中搜索符合条件的文件;
          1. 实时查找;
          2. 精准查找 (系统上实时的有就是有没有就是没有)
          3. 精确查找 (查找结果绝对符合查找条件才予显示)
          4. 查找速度慢;
      2. find使用方法:默认使用当前目录;
               find  [搜索路径]  [搜索条件]  [处理动作]
    1. find搜索条件
      1. -name/-iname:根据用户相关的参数进行查找;
        1. -iname:    按照文件名来搜索(可以使用通配符)

          通配符有:*:      匹配任意多个字符;

          ?:      匹配任意一个字符;

          []     匹配任意一个中括号内的字符;

          [^]   匹配任意一个不在中括号内的字符;

        2. -iname:    按照文件名来搜索,并忽略大小写(可以使用通配符)

        3. -user:              按照文件所有者搜索;

        4.  -group:           按照文件所属组搜索;

        5. -nouser:          搜索不属于这个用户的文件;

        6. -nogroup:        搜索不属于这个用户组的文件;

        7.  -uid:               按照用户UID搜索;

        8. -gid:                按照用户GID搜索;

      2. 组合条件查询;
        1. -a:    与(and),同时满足两个条件,条件一不满足就不执行条件二;
        2. -o:    或(or)   两个条件只需要满足一个条件;
        3. -not:   ,两个条件的值取反A并且非B==(AB),A或非B==(AB)
      3. -type:根据文件类型查找文件;
        1. f:    普通文件
        2. d:    目录文件
        3. b:    块设备文件
        4. c:    字符设备文件
        5. l:    符号链接文件
        6. p:    命令管道文件
        7. s:    套接字文件
      4. -size:根据文件大小查找文件。常用单位:G、M、k,注意M大写,k小写
        1. -size -10k:    搜索文件大小小于10k的文件;
        2. -size 10M:    搜索文件大小为10M的文件;(#+1)>X>=#
        3. -size +10G:    搜索文件大小大于10G的文件;
      5. -time:根据文件时间查找文件;
        1. 以天为单位(time);
          1. -atime 10:     搜索10天前当天访问的文件;(#+1)>X>=#
          2. -mtime -10:    搜索10天内修改过的文件;
          3. -ctime +10:    搜索10天修改过文件属性的文件;
        2. 以分钟为单位(min);
          1. -amin 10:     搜索10分钟前当天修改的文件;(#+1)>X>=#
          2. -mmin -10:    搜索10分钟内修改过的文件;
          3. -cmin +10:    搜索10分钟前修改过文件属性的文件;
      6. -perm:根据文件权限查找文件;
        1. MODE:     精确匹配;
        2. +MODE:    任何一类用户任何一位权限匹配,常用于某类用户的某特定权限是否存在;
        3. -MODE:    每类用户指定的权限位都要匹配;
    2. find处理动作;
      1. -print:           打印在标准输出上;
      2. -ls:             以长格式输出各文件信息;
      3. -exec COMMAND ;:    对查找到的文件执行指定的命令,查找结果太多可能导致命令溢出;

        1
        [root@demo tmp]# find /tmp/ -perm -001 -type f -exec ls -l {} ;
      4. -ok COMMAND ;:      对查找到的文件交互式执行命令;
      5. find | xargs COMMAND:  对查找到的文件执行交互命令;
        1
        [root@demo tmp]# find /tmp/ -perm -003 -type f | xargs chmod o-wx
    3. find命令练习:
      1. 将/tmp/目录下所有文件后缀为xls的修改为xlsx;
        1
        2
        3
        4
        5
        6
        7
        8
        9
        [root@demo tmp]# ll
        -rw-rw-r-- 1 hadoop    hadoop    0 Jul 26 16:38 hadoop.doc
        -rwxr-xr-- 1 root      hadoop    0 Jul 29 21:50 hadoop.xls
        -rwxr-xr-x 1 openstack openstack 0 Jul 26 16:38 openstack.xlsx
        [root@demo tmp]# find /tmp/ -iname "*.xls" -exec mv {} {}x ;
        [root@demo tmp]# ll
        -rw-rw-r-- 1 hadoop    hadoop    0 Jul 26 16:38 hadoop.doc
        -rwxr-xr-- 1 root      hadoop    0 Jul 29 21:50 hadoop.xlsx
        -rwxr-xr-x 1 openstack openstack 0 Jul 26 16:38 openstack.xlsx
      2. 查找/tmp目录中属主为root且属组为hadoop的文件;
        1
        [root@demo tmp]# find /tmp/ -user root -a -group hadoop -ls
      3. 查找/tmp目录下不属于root、hadoop或bin的所有文件;
        1
        [root@demo tmp]# find /tmp/ -not -user root -not -user hadoop -not -user bin -ls
      4. 查找/var/log目录下最近一周内容修改过且不属于root或hadoop的文件;
        1
        [root@demo tmp]# find /var/log/ -mtime -7 -not -user root -not -user hadoop
      5. 查找当前系统没有属主或属组且最近一个月内被访问的文件;
        1
        [root@demo ~]# find / (-nouser -o -nogroup) -atime -30
      6. 查找/var/log目录下大于1M且类型为普通文件的所有文件;
        1
        [root@demo ~]# find /var/log/ -size +1M -type f
      7. 查找/etc/init.d目录下所有用户没有写权限的文件;
        1
        [root@demo ~]# find /etc/init.d/ -perm -222
      8. 查找/etc/init.d目录下至少一类没有写权限的文件;
        1
        [root@demo ~]# find /etc/init.d/ -perm +222
      9. 查找/etc/init.d目录下,所有用户都有执行权限及其他用户有写权限的文件;
        1
        [root@demo ~]# find /etc/init.d/ -perm -113



     
  • 相关阅读:
    Chapter 14 高级I/O
    UNP总结 Chapter 3 套接字编程简介
    UNP总结 Chapter 1 简介
    Chapter 13 守护进程
    Chapter 17 高级进程间通信
    Chapter 15 进程间通信
    实例详解JSP内置对象
    一个记录程序运行时间表的控件
    .Grove—— .Net下的ORM框架
    .Net 下的Wondows窗体常用项目
  • 原文地址:https://www.cnblogs.com/Saviorsyang/p/cfdd58b45ba932ec0aadc25cf1e27ff2.html
Copyright © 2011-2022 走看看