文件的命令;locate   find
 
一、locate locate 这个命令是对数据库进行遍历; 创建数据库的命令:updatedb, locate 查找文件速度快,模糊匹配
语法:locate [option] filename
选项:-i 忽略大小写
-n 查找结果的前N
eg: locate   i   passwd
    locate  -n  5   passwd
 
  二、find
Find 对指定查找目录进行遍历查找,精确查找文件名
 
   使用格式  :语法:find [DIR,...] [CRITERIA 规则] [ACTION ...]
 eg:    find /etc /var   -name passwd   # 目录之间空格
 
         1 )根据文件属性查找
            #  -name        文件名查找)
           #  -iname       忽略大小写 
 
* 任意的字符
         ?任意的单个字符
         [ ] 括号里面的任意一个字符
find /etc –name “*g[br]ub?”
           #  -user          属主来查找文件
           #  -group    属组来查找文件
            #find  /etc -uid  500  uid 500  文件
           #find  /etc  -gid  888  gid 888 的文件
 
          2 )逻辑符号-a    -o   –not 的使用
           # -a  两个不同的条件必须满足
          # -o  两个不同的条件满足其一
           # -not
      
    3 )根据文件时间戳来查找文件
              stat 命令来查文件时间信息:
天为单位:
     -atime  访问时间
-mtime    修改时间
-ctime  改变时间
 
  分钟为单位:
           #-amin
           #-mmin
           #-cmin
 
          #find  /tmp  –atime  +5        五天内没访问过的文件
          #find  /tmp  -atime  -5            五天内访问过的文件
          
           4 )根据文件类型来查找
                -type
                      f      普通文件
                      d      目录文件
                      l      链接文件
                      b      块设备文件
                      c      字符设备文件
                      p      管道文件
                      s     socket 文件
   
  文件大小查找 -size
 
   #find  /tmp  -size  2M    // 查找在1-2M 之间的文件
   #find  /tmp  -size  +2M    // 查找大于2M 的文件
   #find  /tmp  -size  -2M    // 查找小于2M 的文件
 
 
    文件权限查找
 
   -perm
 
   #find  /etc  -perm  755   // 查找权限是755 的文件
  #find  /tmp  -perm  +222  // 只要有一类用户一个权限位匹配就行
 #find  /tmp  -perm  -222 // 所有类别用户要有写权限的文件
 
  5 -nouser  -nogroup
 
  #find  /etc -nogroup –a –nouser  // 查找既没有属主又没有属组的文件
 
 action 动作
 
   -print           默认动作
   -ls            ls  显示出来
      -ok [commend]      查找执行命令后询问
   -exec [commend]      查找执行命令后不询问
 
-exec rm {} \;{} 表示占位符,是ok exec 选项的用法必须以\; 结尾
-exec mv {} {}.txt \;  给查找到的文件加后缀.txt
 
实例:
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 \)
 
-not !
 
3 、查找/etc 目录下最近一周内内容修改过且不属于root student 用户的文件;
# find /etc -mtime -7 -a -not -user root -a -not -user student
# find /etc -mtime -7 -a -not \( -user root -o -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 -exec basename {} >> /tmp/etc.largefiles
 
6 、查找/etc 目录下所有用户都没有写权限的文件,显示出其详细信息;
# find /etc -not -perm /222 -ls