• Linux的find命令


    命令解释

    find

      -- 在目录层次结构中搜索文件

      -- linux下参数最多,最为复杂的命令

    命令语法

     find [-H] [-L] [-P] [-D debugopts] [-Olevel] [path...] [expression]

    常见示例

    基于目录深度的查找

    find /etc/ -mindepth 1 -type f                # 查找/etc目录后至少1个子目录深度的所有文件
    find /etc/ -maxdepth 1 -type f                # 查找/etc目录后至多1个子目录深度的所有文件
    # 这招根据目录成熟设定范围很好用

    基于文件系统的查找

    find / -mount                                # 这招可以屏蔽其他分区的文件搜索

    基于最后一次访问时间查找

    find / -amin -60                              # 最后一次访问时间在60分钟之内的文件或者目录
    find / -atime -2                              # 最后一次访问时间在24*2小时之内的文件或者目录
    find / -mount -anewer /root/anaconda-ks.cfg    # 最后一次访问时间最接近anaconda-ks.cfg文件的最后一次访问时间的文件

    基于最后一次状态更改时间查找

    find / -cmin -60                              # 最后一次状态更改时间在60分钟之内的文件或者目录
    find / -ctime -2                              # 最后一次状态更改时间在24*2小时之内的文件或者目录
    find / -mount -cnewer /root/anaconda-ks.cfg    # 最后一次状态更改时间最接近anaconda-ks.cfg文件的最后一次访问时间的文件

    基于最后一次内容修改时间查找

    find / -mmin -60                              # 最后一次内容修改时间在60分钟之内的文件或者目录
    find / -mtime -2                              # 最后一次内容修改时间在24*2小时之内的文件或者目录
    find / -mount -newer /root/anaconda-ks.cfg     # 最后一次内容修改时间最接近anaconda-ks.cfg文件的最后一次访问时间的文件

    基于文件大小查找

    find / -mount -empty                        # 空目录或者空文件查找
    find / -size -512b                          # 查找根目录下面大小在512bit以内的文件或者目录
    find / -size +1024c                         # 查找根目录下面大于1024字节的文件或者目录
    find / -size 1024k                          # 查找根目录下面等于1024K的文件或者目录
    find / -size +500M                          # 查找根目录下面大于500M的文件或者目录
    find / -size +1G                            # 查找根目录下面等于1G的文件或者目录

    基于权限大小查找

    find / -executable                          # 查找根目录分区下面可执行的文件或者可搜索的目录
    find / -gid 0                               # 查找超级用户组所拥有的文件或者目录
    find / -uid 0                               # 查找超级用户所拥有的文件或者目录
    find / -group root                          # 查找root用户组所拥有的文件或者目录
    find / -nogroup root                        # 查找非root用户组所拥有的文件或者目录
    find / -nouser root                         # 查找非root用户所拥有的文件或者目录
    find / -perm 755                            # 查找权限是755的文件或者目录
    find / -perm 4755                           # 查找权限属主中带有粘滞位的文件或者目录
    find / -readable                            # 查找可读权限的文件或者目录
    find / writable                             # 查找可写权限的文件或者目录

    基于文件名称查找

    find / -mount -name "file"                  # 查找根目录分区下面名叫'file'的文件或者目录
    find / -mount -iname "file"                 # 查找根目录分区下面名叫'file'的文件或者目录,不区分大小写
    find / -mount -path  "*net*"                # 查找根目录分区路劲中包含net的所有文件或者目录
    find / -mount -ipath  "*net*"               # 查找根目录分区路劲中包含net的所有文件或者目录,不区分大小写

    基于链接数查找

    find / -mount -links 3                        # 查找根目录分区下面链接文件数大于等于3的文件或者目录

    基于inode值查找

    find / -inum 101207402                        # 查找根目录下面inum是101207402值的文件或者目录

    对文件进行操作

    find /tmp -type f -exec rm -rf {} ;           # 对tmp下面的普通文件执行删除操作;调用系统的rm命令
    find /tmp -type -delete                        # 对tmp下面的普通文件执行删除操作;

    对匹配文件进行格式化输出

    find /etc -type f -printf 'File:	 %T+ %p
    '   # 下次再研究了,printf很有用的一个参数

    基于文件类型查找

    find / -type f                                # 查找根目录下面的所有文件
    b        块文件,如:磁盘文件
    c        字符文件,如:驱动文件
    d        目录文件
    p        管道文件
    f        普通文件
    l        链接文件
    s        套接文件
    D        这个我也不知道是啥文件

    查找3天内,被被更改过的文件;

    find / -mount -ctime -3 -printf '%t %p
    '  
    %t表示ctime时间打印,%p代表匹配的内容,printf默认不支持换行,所以需要
    

      

     

     

    以上部分均来自于find在线帮助文档,本人仅进行了翻译、收集、整理工作;有不对的地方请多多指点,另外建议各位同学不要跟我这种神经病一样,花一天的时间翻译一个man手册~~~

     注意要点

    • find支持'!'取反符号
    • find默认支持通配符,不支持基础正则
    • find尽量用printf进行格式输出,不要用ls打印
  • 相关阅读:
    P1168 中位数(对顶堆)
    P2341 [HAOI2006]受欢迎的牛
    P1967 货车运输
    树状数组的神操作QAQ
    P1063 能量项链
    P1429 平面最近点对(加强版)
    P2571 [SCOI2010]传送带
    4 Values whose Sum is 0
    UVA529 Addition Chains
    UVA307 Sticks
  • 原文地址:https://www.cnblogs.com/guge-94/p/10411419.html
Copyright © 2020-2023  润新知