Linux - Shell - find 进阶: 时间与大小

  1. 概述
    1. 继续 find
    2. 这次的内容, 参数稍微要 复杂那么一丢丢
  2. 背景
    1. 刚学会了 基础 的参数
    2. 现在来了解一些 时间 和 空间 的参数
      1. 一说到操控时间空间, 感觉立马起来了...
  3. 准备
    1. OS
      1. centos7
    2. 用户
      1. root

1. linux 文件时间戳

  1. 概述
    1. linux 文件时间戳回顾
  2. 时间戳
    1. linux 文件有 3 个时间戳
      1. a
        1. 访问, 读入内存
      2. c
        1. 修改元数据, inode 数据
      3. m
        1. 修改数据, 文件数据
  3. find 与时间
    1. 支持
      1. find 支持这三种时间, 作为约束条件
      2. 但是三种又 大同小异
      3. 所以, 我只选择 mtime 来做演示

2. find 时间参数的一些格式

  1. +n
    1. > n
      1. 以 时间为例, 单位是 分钟
        1. n = 1, 范围是 [1:00, 无穷大]
  2. -n
    1. < n
      1. 以 时间为例, 单位是 分钟
        1. n = 1, 范围是 [0:00, 1:00]
  3. n
    1. 精确 = n
      1. 也不是很精确
      2. 以 时间为例
        1. n = 1, 范围是 [0:00, 1:00]
        2. n = 2, 范围是 [1:00, 2:00]
  4. 其他
    1. 作用范围
      1. 时间
        1. min 类选项
        2. time 类选项
      2. 空间
        1. size 类选项
    2. 区间的端点, 可能会不那么精确
      1. 查找的时候, 尽量不要让要找的内容, 在 时间边界 上

3. 约束: mmin, mtime

  1. 概述
    1. 编辑时间的约束
    2. 另外两个时间风格类似, 就不重复介绍了
  2. 选项
    1. -mmin
      1. 概述
        1. 编辑时间过滤
        2. 单位是 min
      2. 作用
        1. 查找 最后编辑时间, 在 n 分钟的内容
    2. -mtime
      1. 概述
        1. 编辑时间过滤
        2. 单位是 天
        3. 无视 时区
      2. 作用
        1. 查找 最后编辑时间, 在 n 天的内容
  3. 命令

    # 查询 编辑时间距现在在 [1:00, 2:00] 区间内的内容
    > find /etc -mmin 2
    # 查询 编辑时间距现在在 [0:00, 2:00] 区间内的内容
    > find /etc -mmin -2
    # 查询 编辑时间距现在在 [2:00, 正无穷] 区间内的内容
    > find /etc -mmin +2
    
    
    # 查询 编辑时间距现在在 [1day, 2day] 区间内的内容
    > find /etc -mtime 2
    # 查询 编辑时间距现在在 [0day, 2day] 区间内的内容
    > find /etc -mtime -2
    # 查询 编辑时间距现在在 [2day, 正无穷] 区间内的内容
    > find /etc -mtime +2
  4. 其他参数
    1. atime
      1. amin
      2. atime
    2. ctime
      1. cmin
      2. ctime

4. 约束: newer

  1. 概述
    1. 编辑时间的维度
    2. 这次的参数, 是另一个 参照物文件
  2. -newer
    1. 作用
      1. 后面跟一个文件
        1. 比这个文件 更新的内容, 会被 搜索出来
      2. 疑问: 有 older 吗?
        1. 这个我目前没有找到...
  3. 命令

    > find /etc -newer /etc/passwd
  4. 其他参数
    1. atime
      1. anewer
    2. ctime
      1. cnewer

5. 约束: size

  1. 概述
    1. 文件大小相关的约束
  2. -size
    1. 作用
      1. 以 文件大小作为 约束条件
    2. 单位
      1. b
        1. 不是 byte
        2. 大小为 512 byte
        3. 为什么是这个奇怪的大小
          1. 很多硬盘的 block, 刚好也是这个大小
          2. 不知道是先有哪个, 反正这俩大小刚好一样
      2. c
        1. byte / B
      3. w
        1. 2bytes
      4. k
        1. KB
      5. M
        1. MB
      6. G
        1. GB
    3. 我也不知道为啥
      1. M 以下的都要小写
    4. 常用
      1. ckMG 四个足矣
  3. 例子

    # 查找大小为 1k 的文件
    > find /etc -size 1k
    # 查找大小小于 1k 的文件
    > find /etc -size -1k
    # 查找大小大于 1k 的文件
    > find /etc -size +1k
    # 这个 -/+ 上面有说, 我就不再提了

ps

  1. ref
    1. find(1) - Linux man page
  2. 后续
    1. 文件的范围与层次
      1. depth
      2. 复合的range
  3. 感觉
    1. 这个地方单独提出来的理由
      1. 上一篇讲得东西, 感觉是 最日常 的
      2. 这里的东西, 稍微日常一点, 而且 那个参数格式的东西, 第一次见到的话, 可能要蒙圈一下
        1. 我也不知道, 是不是我第一次见到的那个人, 讲得太烂...
    2. 下一篇可能是最后了吧
      1. 其实还有 exec {}  的内容, 但是 理解了 xargs 之后, 会发现 xargs 其实更加强大
        1. 所以我打算用 xargs 来处理类似的需求

猜你喜欢

转载自www.cnblogs.com/xy14/p/12055355.html