Chinaunix首页 | 论坛 | 博客
  • 博客访问: 95585
  • 博文数量: 16
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 200
  • 用 户 组: 普通用户
  • 注册时间: 2014-06-18 23:43
文章分类

全部博文(16)

分类: LINUX

2014-06-19 00:13:09

Linux中文件查找可用,locate和find 。 以下是查询网络资料和man find后自己整理的文章
locate : 非实时,模糊匹配查找是根据全系统文件数据库进行的。如果要手动生成系统数据库,执行命令updatedb。
            优点: 执行速度比较快
            缺点:非实时,只能模糊匹配查找
       
find :实时 精确精确匹配查找  支持众多查找标准  遍历指定目录中的所有文件完成查找,速度比较慢
格式 :  find     查找路径       查找标准        查找到以后的处理运作
          查找路径:默认为当前路径
          查找标准:默认为指定路径下的所有文件
          处理运作:默认为显示打印
匹配标准:
       -name ‘FILENAME’:对文件名作精确匹配
      ####   find  /tmp -name test    如查找tmp目录下的test文件
       -iname 'FILENAME': 文件名匹配时不区分大小写
       -regex pattern :基于正则表达式进行文件名匹配
       
       -user USERNAME :根据文件宿主查找
    #### find  /tmp -user root  查找tmp目录下属主是root的文件
       -group GROUPNAME:根据宿主查找
  #### find  /tmp -group  group1  查找tmp目录下属组是group1的文件
       -uid UID :根据UID查找
       -gid GID :根据GID查找  
   #####   上面两个选项主要用于,当属主和属组被删除后,根据uid 和gid查找
       -nouser :查找没有属主的文件
       -nogroup:查找没有属组的文件
   ##### 上面两个选项时针对一些没有属主和属组的文件,查找出,可将权限给予root,这样文件就不会被其他用户操作的风险
       -type :根据文件类型查找
            f: 普通文件
            d:目录
            c:块设备
        ####  find  /tmp  -type d  查找tmp下类型为目录的文件            
      -size :可用+-,+表示大于 -表示小于
     ##### find /tmp  -size 5M  查找tmp下文件大小为5M的文件(注:范围在4-5M之间的所有文件)
    ##### find /tmp  -size +5M  查找tmp下文件大小大于5M的文件 
     ##### find /tmp  -size +5M  查找tmp下文件大小小于5M的文件
组合条件: 默认为-a
     -a 与
     -o 或
     -not 非
  ##### find /tmp  -not -user root  -a not  -group root  查找/tmp下所有属主非root和属组非root的文件     
     
     -mtime 修改时间
     -ctime 状态改变时间
     -atime 执行时间
      + - :例
              +5 表示至少5天
              -5 表示5天内
               5 表示精确5天
               
     -mmin
     -cmin 分钟,用法跟time一样
     -amin
                 
     -perm mode 每一位权限都精确匹配
           /mode 任意一位匹配既满足
           -mode 文件权限能完全包含此MODE时才符合条件
           
ACTION:
      -print:显示 默认
      -ls :类似ls -l 的形式显示每一个文件的详细信息
      -ok COMMAND {} \; 每一次操作都需要用户确认
      -exec COMMADN {} \; 不需要用户确认,直接执行

注:find 命令在执行多个条件查找时 要将选项用单引号,不然系统会报错
例:
find ./ -name '*.gz' -o -name '*.tar' -o -name '*.sh'


  例题:
1、查找/var目录下属主为root并且属组为mail的所有文件;
find /var -user root -group mail
2、查找/usr目录下不属于root,bin,或student的文件;
find /usr -not -user root -a -not -user bin -a -not -user student
find /usr -not \( -user root -o -user bin -o -user student \)
3、查找/etc目录下最近一周内内容修改过且不属于root及student用户的文件;
find /etc -mtime -7 -not \ ( -user root -o -user student \)
find /etc -mtime -7 -not -user root -a -not -user student
4、查找当前系统上没有属主或属组且最近1天内曾被访问过的文件,并将其属主属组均修改为root;
find / \( -nouser -o -nogroup \) -a -atime -1 -exec chown root:root {} \;
5、查找/etc目录下大于1M的文件,并将其文件名写入/tmp/etc.largefiles文件中;
find /etc -size +1M >> /tmp/etc.largefiles
6、查找/etc目录下所有用户都没有写权限的文件,显示出其详细信息;
find /etc -not -perm /222 -ls
阅读(1355) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~