【shell】压缩文件

本文介绍了在Shell中处理大量文件时遇到的问题,如grep查询速度慢、压缩过期文件减少目录大小,以及使用find、tar和grep进行文件操作、压缩和移动的方法。重点讲解了mtime时间戳在文件管理中的应用。
摘要由CSDN通过智能技术生成

shell - 压缩文件

遇到问题

目录下文件个数超 100W , grep 查询文件太慢

如何解决

压缩超 30 天未修改的文件, 可以大大减少目录下文件数, 提升查询效率

查看准备压缩的文件个数
find . -type f -mtime +30 -print | wc -l

将多个文件压缩为一个文件
find . -type f -mtime +30 -print0 | tar -cvf xxx.tar --null -T -

查看压缩包下文件个数
tar -tvf xxx.tar | wc -l

删除已压缩备份的文件
find . -type f -mtime +30 -delete

模糊匹配查找压缩包下的文件
tar -tvf xxx.tar | grep 'xxxxx'

不解压的情况下查看 aaa.txt 的文件内容
tar -Oxf xxx.tar aaa.txt

解压到指定目录
tar -xvf xxx.tar -C /xxx/xxx/

或者说, 在磁盘空间足够、且有查询历史文件需求的情况下, 直接将该目录下文件定期拆分移动到不同的目录下

find path1 -type f -mtime +$days -exec mv {} path2 \;

$days 视情况而定: -mtime +30 表示 30 天前或更早的文件, -mtime -30 表示 30 天内或更近的文件。

例如, 想要查看按天生成的固定文件xxx.log, 创建时间在10天内的详细信息, 就用 -10

find path1 -iname "xxxx.log" -mtime -10 -exec ls -lh {} \;

知识点

  • find . : 在当前目录及子目录下查找
    • find . -maxdepth 2 指定层级深度, 递归查询当前目录下的第一、二层目录
  • mtime :
    • linux 文件有三种时间戳 stat filename, 访问时间 atime, 修改时间 mtime, 更改时间 ctime
    • atime : 文件最后一次被访问的时间. 当读取文件内容时, atime 会更新
    • mtime : 文件内容最后一次被修改的时间. 当编辑或更改文件内容时, mtime 会更新
    • ctime : 文件元数据(权限,所有权等)最后一次被更改的时间. 当更改文件的元数据时, ctime 会更新
  • print : 会一行一个输出符合条件的文件名
  • print0 : 会在每个文件名之间添加一个空字符\0作为分隔符之后输出一行内容
  • --null -T - :
    • --null 指示 tar 命令使用空字符作为文件名分隔符
    • -T - 选项告诉 tar 命令从标准输入读取文件名列表
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值