Chinaunix首页 | 论坛 | 博客
  • 博客访问: 236381
  • 博文数量: 65
  • 博客积分: 1430
  • 博客等级: 中尉
  • 技术积分: 700
  • 用 户 组: 普通用户
  • 注册时间: 2011-04-27 00:30
文章分类
文章存档

2011年(65)

分类: LINUX

2011-07-29 21:33:12

一。locate
    locate命令用于文件查找时在数据库中查找,模糊匹配;update可以创建该数据库
    语法:locate [option] filename
    选项:-i 忽略大小写
          -n N 匹配前N行
二。find
    find命令用于实时查找,精确匹配文件名
    语法:find [DIR,...] [CRITERIA] [ACTION ...]
    eg:find /root
       find /etc (查找/etc下的所有文件)
  CRITERIA:
 1.
    -name 根据文件名查找
    -iname 表示根据文件名查找且不区分大小写
     eg:find /tmp -name "test*"
 2.根据文件名通配符查找(不是正则表达式)
   * 匹配任意长度的任意字符
   ?匹配任意单个字符
   []范围表达式,一次匹配范围中的一个字符
   eg:find /etc/ -name "passwd?"
       find /etc/ -name "passwd*"
 3.根据用户来查找
   -user
   eg:ls -l `find /home -user redhat`
   -group 根据组来查找 
   -uid
   eg:ls -l `find -uid 501`
   -gid
 4.使用逻辑符号,多用于连接多个以不同标准查找的操作(比如按-name和-user)
   -a 与
   -o 或
   -not 非
   !非
    eg: ls -ld `find /tmp -name "test*" -a -user redhat`
    (既以text开头,又属于redhat的文件)
     ls -ld表示以长格式显示目录本身的属性  不显示目录中文件的属性
     eg:ls -ld `find /tmp -name "test*" -o -user redhat`
    (以text开头,或属于redhat的文件)
    eg:ls -ld `find /tmp -not -user root`
   (以text开头,或属于root的文件)
    ls -ld `find /tmp ! \( -user redhat -o -user root \)`
    (既不属于rehat也不属于root的文件,注意:括号以内容之间必须有空格)
  5.根据时间戳查找
    -atime (访问时间,以天为单位)
    -mtime (修改时间,修改的是实际数据)
    -ctime  (改变时间,改变的只是索引里的信息)
    eg:find /etc -atime +5
    -amin [+/-] 5 (访问时间,以分钟为单位)(如果不写+或-,则表示被访问过刚好5
                分钟,+表示多于5分钟,-表示少于5分钟)
    -mmin
    -cmin
    -anewer a.txt (比a.txt 最近的访问时间还近的文件)
    eg:find /etc -anewer /etc/passwd
    -cnewer a.txt (比a.txt最近的的改变时间还近的文件)
    -mnewer a.txt (比a.txt最近的修改时间还近的文件 
 6. -type(根据文件类型查找)
    f  文件
    d   目录eg:ls -l `find /etc/ -type d`
    l   链接文件
    s   套接字文件
    b   块设备
    c   字符设备
    p   (pipe)管道
    -size(根据文件大小查找)
   [+/-]N
   find /etc/ -size +100k(大于100k的)
   当N是1的时候比较特殊:
   ls -l `find /etc -size 1k`
   显示的是小于1k的所有文件
 7.-perm [-/]mode(根据权限查找)
   ls -d `find /tmp -perm 755`
   -表示每一类用户的权限都必须匹配
   find ./ -perm -222(每类用户都必须有写权限,属主,属组,其他)
   find ./ -perm /222(至少有一类用户有写权限)
   find ./ -perm -777 (每类用户都必须有写,读,执行权限)
   find ./ -perm /777 (至少有一类用户有写,读,执行,中的至少一种)
   ls -ld `find /etc -perm /001 (其他用户有执行权限的文件)
   ls -ld `find /etc -perm /001 -not -type d -not -type l`
8.
  -nouser 没有属组的文件
  -nogroup 没有属组的文件
action:
  -print
  -ls
  -ok  (对find到的文件做一系列操作并加上确认提示信息)
  -exec (对find到的文件做一系列操作)
  find ./ -perm /001 -not -type d -ls
  find ./ -perm /001 -not -type d -exec chmod o-x {} \;
  ({}表示占位符,是ok和exec选项的用法,表示find查找到的文件,必须以\;结尾)
  find ./ -name "[[:alpha:]][[:digit:]]" -exec mv {} {}.old \;
  (在找到的文件的结尾加上.old}
  find /tmp -atime +30 -exec rm -rf {} \;
  xargs 对find到的文件做一系列操作
  find ./ -naem "*.old" | xargs chmod 755   
阅读(1415) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~