Linux - Shell - find - 进阶: 时间与大小
-
概述
- 继续 find
- 这次的内容, 参数稍微要 复杂那么一丢丢
-
背景
- 刚学会了 基础 的参数
- 现在来了解一些 时间 和 空间 的参数
- 一说到操控时间空间, 感觉立马起来了...
-
准备
- OS
- centos7
- 用户
- root
- OS
1. linux 文件时间戳
-
概述
- linux 文件时间戳回顾
-
时间戳
- linux 文件有 3 个时间戳
- a
- 访问, 读入内存
- c
- 修改元数据, inode 数据
- m
- 修改数据, 文件数据
- a
- linux 文件有 3 个时间戳
-
find 与时间
- 支持
- find 支持这三种时间, 作为约束条件
- 但是三种又 大同小异
- 所以, 我只选择 mtime 来做演示
- 支持
2. find 时间参数的一些格式
-
+n
- > n
- 以 时间为例, 单位是 分钟
- n = 1, 范围是 [1:00, 无穷大]
- 以 时间为例, 单位是 分钟
- > n
-
-n
- < n
- 以 时间为例, 单位是 分钟
- n = 1, 范围是 [0:00, 1:00]
- 以 时间为例, 单位是 分钟
- < n
-
n
- 精确 = n
- 也不是很精确
- 以 时间为例
- n = 1, 范围是 [0:00, 1:00]
- n = 2, 范围是 [1:00, 2:00]
- 精确 = n
-
其他
-
作用范围
- 时间
- min 类选项
- time 类选项
- 空间
- size 类选项
- 时间
-
区间的端点, 可能会不那么精确
- 查找的时候, 尽量不要让要找的内容, 在 时间边界 上
-
3. 约束: mmin, mtime
-
概述
- 编辑时间的约束
- 另外两个时间风格类似, 就不重复介绍了
-
选项
-
-mmin
-
概述
- 编辑时间过滤
- 单位是 min
-
作用
- 查找 最后编辑时间, 在 n 分钟的内容
-
-
-mtime
-
概述
- 编辑时间过滤
- 单位是 天
- 无视 时区
-
作用
- 查找 最后编辑时间, 在 n 天的内容
-
-
-
命令
# 查询 编辑时间距现在在 [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
-
其他参数
- atime
- amin
- atime
- ctime
- cmin
- ctime
- atime
4. 约束: newer
-
概述
- 编辑时间的维度
- 这次的参数, 是另一个 参照物文件
-
-newer
- 作用
-
后面跟一个文件
- 比这个文件 更新的内容, 会被 搜索出来
-
疑问: 有 older 吗?
- 这个我目前没有找到...
-
- 作用
-
命令
> find /etc -newer /etc/passwd
-
其他参数
- atime
- anewer
- ctime
- cnewer
- atime
5. 约束: size
-
概述
- 文件大小相关的约束
-
-size
-
作用
- 以 文件大小作为 约束条件
-
单位
-
b
- 不是 byte
- 大小为 512 byte
- 为什么是这个奇怪的大小
- 很多硬盘的 block, 刚好也是这个大小
- 不知道是先有哪个, 反正这俩大小刚好一样
-
c
- byte / B
-
w
- 2bytes
-
k
- KB
-
M
- MB
-
G
- GB
-
-
我也不知道为啥
- M 以下的都要小写
-
常用
- ckMG 四个足矣
-
-
例子
# 查找大小为 1k 的文件 > find /etc -size 1k # 查找大小小于 1k 的文件 > find /etc -size -1k # 查找大小大于 1k 的文件 > find /etc -size +1k # 这个 -/+ 上面有说, 我就不再提了
ps
-
ref
-
后续
- 文件的范围与层次
- depth
- 复合的range
- 文件的范围与层次
-
感觉
- 这个地方单独提出来的理由
- 上一篇讲得东西, 感觉是 最日常 的
- 这里的东西, 稍微日常一点, 而且 那个参数格式的东西, 第一次见到的话, 可能要蒙圈一下
- 我也不知道, 是不是我第一次见到的那个人, 讲得太烂...
- 下一篇可能是最后了吧
- 其实还有 exec {} \ 的内容, 但是 理解了 xargs 之后, 会发现 xargs 其实更加强大
- 所以我打算用 xargs 来处理类似的需求
- 其实还有 exec {} \ 的内容, 但是 理解了 xargs 之后, 会发现 xargs 其实更加强大
- 这个地方单独提出来的理由
尽量尝试解释清楚; 自己校对能力有限, 如果有错误欢迎指出