zoukankan      html  css  js  c++  java
  • 学习记录18

    Linux文件查找详解

    文本查找工具:grep, egrep, fgrep

    文件查找:

    1. locate:

             非实时,模糊匹配,查找是根据全系统文件数据库进行的;

    # updatedb, 手动生成文件数据库

    速度快

    2. find

             实时

             精确

             支持众多查找标准

             遍历指定目录中的所有文件完成查找,速度慢;

    find 查找路径 查找标准 查找到以后的处理动作

        查找路径:默认为当前目录

        查找标准:默认为指定路径下的所有文件

        处理运作:默认为显示

    匹配标准:

             -name 'FILENAME':对文件名作精确匹配

                       文件名通配:

                                *:任意长度的任意字符

                                ?:任意单个字符

                                []:任意指定范围内的字符

             -iname 'FILENAME': 文件名匹配时不区分大小写

             -regex PATTERN:基于正则表达式进行文件名匹配

            

             -user USERNAME: 根据属主查找

             -group GROUPNAME: 根据属组查找

            

             -uid UID: 根据UID查找

             -gid GID: 根据GID查找(用户或组被删除后,属于这个用户或组的文件全部换成ID号)

            

             -nouser:查找没有属主的文件

             -nogroup: 查找没有属组的文件

            

             -type:文件类型

                       f:普通文件

                       d:目录

                       c:字符设备

                       b:块设备

                       l:符号链接

                       p:管道文件

                       s:套接字文件

            

             -size [+|-]:文件大小(默认单位为字节)

                       #kKB

                       #M: MB

                       #G: GB

             -mtime:修改时间()

             -ctime:创建时间

             -atime:访问时间

                       [+|-]#

             -mmin:单位为分钟

             -cmin

             -amin

                       [+|-]#

                      

             -perm MODE:权限精确匹配

                       /MODE: 任意一位匹配即满足条件

                       -MODE: 文件权限能完全包含此MODE时才符合条件

                      

                       -644

                       644: rw-r--r--

                       755: rwxr-xr-x

                       750: rwxr-x---

             eg: find ./ -perm -001

             

    组合条件:

             -a:与

             -o:或

             -not:非

    组合条件练习:

    1. 查找/tmp目录下,不是目录并且还不是套接字类型的文件

        find /tmp -not -type d -a -not -type s

    2. 查找/tmp/test目录下,属主不是user1,也不是user2的文件;

        find /tmp/test -not -user user1 -a -not -user user2

        find /tmp/test -not −useruser1−o−useruser2

    动作:

             -print: 显示

             -ls:类似ls -l的形式显示每一个文件的详细

             -ok COMMAND {} ; :每一次执行COMMAND前都需要用户确认

             -exec COMMAND {} ;:不需要确认

    综合练习: 

    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 −userroot−o−userbin−o−userstudent

    3、查找/etc目录下最近一周内内容修改过且不属于rootstudent用户的文件;

    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   

    xargs命令

    find /etc/ -size +1M -exec echo {} >> /tmp/etc.largefiles ;

    上面的命令可以借助xargs,写成:

    find /etc/ -size +1M | xargs echo >> /tmp/etc.largefiles

  • 相关阅读:
    pku 1077 Eight
    poj 1700 过河问题 贪心法
    字典树
    [转] 解读IntelliJ IDEA的优缺点
    【转】STL 容器类内部实现
    Google Chrome太强大了
    【转】从哈希存储到Bloom Filter
    [转]我的多年羽毛球自学心得
    好书推荐
    【转】C++错误中英文对照表
  • 原文地址:https://www.cnblogs.com/bgd140206127/p/6738321.html
Copyright © 2011-2022 走看看