linux下面的查找

locate:
    速度快
    不是实时的,每天定时执行把结果导入数据库
    模糊匹配
    updatedb  --手动生成文件数据库,执行时间较长
 
find:
    实时查找
    精确
    速度慢
    支持众多查找标准
 
find 查找路径  查找标准 处理动作
查找路径:默认当前目录
查找标准:默认为所有文件
处理动作:默认打印出查找出来的内容
 
匹配标准:
    -name 'filename'   --对文件名精确匹配
            支持通配符:
                *,[],?
    -iname 'filename'  --不区分大小写
    -regex  PATTERN   --基于正则表达式类进行匹配
    -user  username    --根据文件的属主类匹配               
    -group groupname  -- 根据文件的属组类匹配      
    -uid   uid                   --根据uid匹配
    -gid   gid                   --根据gid匹配
    -nouser                      --查找没有属主的文件
    -nogroup                  --查找没有属组的文件
    -type                          --文件类型
        f      --普通文件
        d     --目录
        c      --字符设备,按字符为单位,线性设备;键盘
        b      --块设备,按块为单位,随机访问的设备;硬盘
        l       --链接文件
        p      --管道设备
        s      --套接字设备
    -size                            --文件大小
        [+|-]#k,#M,#G        --默认为字节,find -size +50M 大于50M的文件
注意:大小根据ls -lh来的
    -mtime                         --修改时间
    -ctime                           --创建时间
    -atime                           --访问时间
    [+|-]                               --  -最近几天访问过;+有多少天没有访问过
    -mmin                           --分钟;find -amin -5 最近五分钟访问了的文件
    -cmin                             
    -amin              
    -perm mode                --权限查找,精确匹配
            /mode                  --find -perm /640  匹配一个就能匹配出来
            -mode                  --文件权限能完全包含才显示;find -perm -640  能匹配出来755
     find /etc/ -not -perm  /222 -ls   --匹配没有写权限的
 
     find -perm -001          --查找其他人有执行权限的文件
     find -perm -022          --组和其他人都有写权限
     
处理动作:
    -print                            --显示
    -ls                                 --和ls -l类似
    -ok COMMADN {} \;       --每次需要用户确认
    -exec COMMADN {} \;    --不用用户确认
 
find -perm -020 -exec mv {} {}.new \;    --按照权限查找并修改名字
 
find /etc -size +1M |xargs echo >> /tmp/test.log   --空格分隔
 
find -size +10k -print|awk '{print "echo > "$0}'|bash   --清空大于10k的文件,不知道为什么使用echo和cat会出现语法格式错误
 
 find . -type f -name "err*" -exec  rename err ERR {} \; # 批量改名(查找err 替换为 ERR {}文件 
 
组合条件
    -a
    -o
    -not 
 
 
 
 
posted @ 2016-03-30 10:35  我的烂笔头  阅读(146)  评论(0编辑  收藏  举报