zoukankan      html  css  js  c++  java
  • find

    *******************
    文本查找:
    find 命令详解:
    -name
    -iname 忽略文件名大小写
    -empty查找所有的空文件或空目录
    -user USERNAME
    -uid UID
    -gid GID
    -nouser
    -nogroup
    [!] -newer
    -exec command {} ;
     
    xargs命令:
    find ./ -perm 666 -print | xargs chmod o-w
     
     
     
     
    组合查找条件:
    -a    -o    -not或!
    find /tmp/hadoop/ ! -user hadoop -a ! -empty
    find /tmp/hadoop -not (-user hadoop -o -empty )
    fine /tmp/hadoop -not (-user hadoop -a -name "i*")
     
     
     
    新修订:
    文件查找:find命令
    grep: 文本搜索
     
    locate: (updatedb)
    依赖于数据库
    非实时查找,结果非精确
    查找速度快
    模糊查找
    passwd, /tmp/mypasswd/a.txt
    find:
    实时查找:速度慢
    精确匹配
     
    find [options] [查找路径] [查找条件] [处理动作]
    查找路径:默认为当前目录
    查找条件:默认为查找指定路径下的所有文件
    处理动作:默认为显示
     
    查找条件:
    -name "文件名称": 支持使用globbing
    *
    []
    [^]
    -iname "文件名称":查找时不区分字符大小写
     
    -user UserName: 根据属主查找
    -group GroupName: 根据属组查找
     
    -uid UID
    -gid GID
     
    -nouser:查找没有属主的文件;
    -nogroup: 查找没有属组的文件;
     
    组合条件:
    -a: 与,同时满足,可省略。
    -o: 或,
              -a和-o同时使用时-a的优先级高些。
    -not, !:非,取反
     
    非A,并且 非B: 非(A或B)
     
    -not ( -user hadoop -o -iname "*.txt" )            "("须转义
     
    非A,或 非B: 非(A且B)
     
    -type: 根据文件类型查找
    f: 普通文件
    d: 目录
    b: 块设备
    c: 字符设备
    l: 符号链接文件
    p: 命名管道
    s: 套接字
     
    -size: 根据文件大小查找
    -size [+|-]#Unit
    例如:-size +2M
                                               -size  2M:查找文件大小在1M<X<=2M范围内的文件。#: (#-1)<x<=#
                                                -size -2M:查找文件大小在<=1M范围内的文件。         
    常用单位:k(小写), M, G
                     
     
            根据时间戳查找:
    以天为单位(time):
    -atime [+|-]#
    +: 表示(#+1)天之外被访问过;
    -: 表示#天之内被访问过;
    无符号:表示短于(#+1)> x >=#天的时间段被访问过;
    -mtime
    -ctime
     
    以分钟为单位(min):
    -amin [+|-]#
    -mmin
    -cmin
     
     
    根据权限查找:
    -perm [+|-]MODE
    MODE:精确匹配
    +MODE: 任何一类用户的任何一位权限匹配
     
    ;常用于查找某类用户的某特定权限是否存在;
    -MODE: 每类用户的指定要检查的权限位都
     
    匹配;
     
    文件权限:644
    -perm 600: 否
    -perm +222:
    -perm +002 :0表示不检测这类用户的权限位。
    -perm -444
     
    find / -type f -perm +001
     
    练习:
    1、查找/var/目录属主为root且属组为mail的所有文件;
    # find /var/ -user root -a -group mail
     
    2、查找/usr目录下不属于root、bin或hadoop的所用文件;
    # find /usr/ -not -user root -a -not -user bin -a -not -user hadoop
    # find /usr/ -not ( -user root -o -user bin -o -user hadoop )
     
     
    3、查找/etc/目录下最近一周内其内容修改过的,且不属于root或hadoop的文件
     
    # find /etc/ -mtime -7 -a -not -user root -a -not -user hadoop
    # find /etc/ -mtime -7 -a -not ( -user root -o -user hadoop )
     
     
    4、查找当前系统上没有属主或属组,且最近1个月内曾被访问过的文件;
    # find / ( -nouser -o -nogroup ) -a -atime -30
     
    5、查找/etc/目录下大于1M且类型为普通文件的所有文件;
    # find /etc/ -size +1M -a -type f
     
     
    6、查找/etc/目录所有用户都没有写权限的文件;
    # find /etc/ -not -perm +222
    所有都没有:相反:任何一个有
    所有都有:相反:至少有一个没有
     
    7、查找/etc/目录下至少有一类用户没有写权限;
    # find /etc/ -not -perm -222
     
    8、查找/etc/init.d/目录下,所有用户都有执行权限且其它用户有写权限的文件;
    # find /etc/init.d/  -perm -113 
     
     
    处理动作:
    -print:打印在标准输出上;
    -ls:以长格式输出各文件信息;
    -exec COMMAND {} ; :对查找到的文件执行指定的命令
         #find /tmp -iname "*.doc" -exec mv {} {}x ;
    -ok COMMAND {} ; : 交互式的-exec;
     
    find把查找到的所有文件一次性地传递给-exec所指定的命令
     
    find | xargs COMMAND
     
    总结:find [查找路径] [查找条件] [动作]
    -name, -iname, -user, -group, -uid, -gid, -nouser, -nogroup, 
     
    -size, -type, -atime, -perm
    -exec, -ok, -ls
    | xargs COMMAND
     
     
     
    find补充材料(摘自互联网):
     
     
    find与xargs
    在使用find命令的-exec选项处理匹配到的文件时, find命令将所有匹配到的文
     
    件一起传递给exec执行。但有些系统对能够传递给exec的命令长度有限制,这样
     
    在find命令运行几分钟之后,就会出现 溢出错误。错误信息通常是“参数列太
     
    长”或“参数列溢出”。这就是xargs命令的用处所在,特别是与find命令一起
     
    使用。
     
    find命令把匹配到的文件传递给xargs命令,而xargs命令每次只获取一部分文件
     
    而不是全部,不像-exec选项那样。这样它可以先处理最先获取的一部分文件,
     
    然后是下一批,并如此继续下去。
     
    在有些系统中,使用-exec选项会为处理每一个匹配到的文件而发起一个相应的
     
    进程,并非将匹配到的文件全部作为参数一次执行;这样在有些情况下就会出现
     
    进程过多,系统性能下降的问题,因而效率不高;
     
    而使用xargs命令则只有一个进程。另外,在使用xargs命令时,究竟是一次获取
     
    所有的参数,还是分批取得参数,以及每一次获取参数的数目都会根据该命令的
     
    选项及系统内核中相应的可调参数来确定。
     
     
     
     
           
     
     
  • 相关阅读:
    【leetcode】366.Find Leaves of Binary Tree
    【leetcode】338 .Counting Bits
    【leetcode】419.Battleships in a Board
    【leetcode】544. Output Contest Matches
    【leetcode】496. Next Greater Element I
    ArcEngine创建ShapeFile文件2
    ArcEngine创建ShapeFile文件3
    ArcEngine创建字段集
    ArcEngine创建ShapeFile文件
    ArcEngine创建个人地理数据库
  • 原文地址:https://www.cnblogs.com/as007012/p/10009126.html
Copyright © 2011-2022 走看看