查找符合特定命名模式的日志文件并批量执行gzip压缩
2020年1-9月日志批量gzip压缩方案
如果你已经调试好了自己的find筛选命令,只需要在原有命令末尾追加
-exec gzip {} \;或者通过管道接| xargs gzip即可完成压缩操作。
方法1:直接用find的exec参数执行压缩(最便捷)
一步完成筛选+压缩,适合已经确认筛选规则无误的场景:
find . -type f -name "test.2020-0[1-9]-*.log" -exec gzip {} \;
参数说明:
-type f:仅匹配普通文件,排除目录、软链接等非日志文件-name "test.2020-0[1-9]-*.log":通过通配符精准匹配2020年1月(01)至9月(09)的对应命名格式日志,不会误匹配10-12月的文件-exec gzip {} \;:将find查找到的每一个文件路径代入{}位置,调用gzip执行压缩,默认压缩后生成.gz后缀的压缩包,自动删除原文件
方法2:先验证筛选结果再压缩(更安全)
如果你担心筛选规则写错误压缩文件,可以先执行筛选命令确认结果:
find . -type f -name "test.2020-0[1-9]-*.log"
确认输出的文件都是你需要压缩的目标文件后,通过管道加xargs执行压缩即可:
find . -type f -name "test.2020-0[1-9]-*.log" | xargs gzip
如果你的日志文件名存在空格、特殊字符,使用兼容特殊字符的版本:
find . -type f -name "test.2020-0[1-9]-*.log" -print0 | xargs -0 gzip
可选扩展配置
- 如果你需要保留原日志文件,不希望压缩后删除源文件,将
gzip替换为gzip -k即可 - 如果你需要调整压缩率,比如使用最高压缩率,将
gzip替换为gzip -9;需要低压缩率更快速度的话替换为gzip -1
内容的提问来源于stack exchange,提问作者Nib0rt
相关产品推荐
相关产品推荐

