linux - 使用 bash 根据文件名(日期)移动日志文件
问题描述
我目前正在寻找自动备份旧日志文件。我尝试了很多find
,但似乎只能通过编辑日期进行。试过这个:
find /tmp/logtest -ctime +14 | xargs -I '{}' mv {} /mnt/archive
我正在寻找的是基于文件名的移动。
我的文件夹看起来像这样
.
├── 20200901.cq4.gz
├── 20200902.cq4.gz
├── 20200903.cq4.gz
├── 20200904.cq4.gz
├── 20200905.cq4.gz
├── 20200906.cq4.gz
├── 20200907.cq4.gz
├── 20200908.cq4.gz
├── 20200909.cq4.gz
├── 20200910.cq4.gz
├── 20200911.cq4.gz
├── 20200912.cq4.gz
├── 20200913.cq4.gz
├── 20200914.cq4.gz
├── 20200915.cq4.gz
├── 20200916.cq4.gz
├── 20200917.cq4.gz
├── 20200918.cq4.gz
├── 20200919.cq4.gz
├── 20200920.cq4.gz
├── 20200921.cq4.gz
├── 20200922.cq4.gz
├── 20200923.cq4.gz
├── 20200924.cq4.gz
├── 20200925.cq4.gz
├── 20200926.cq4.gz
├── 20200927.cq4.gz
├── 20200928.cq4.gz
├── 20200929.cq4.gz
├── 20200930.cq4.gz
├── 20201001.cq4.gz
├── 20201002.cq4.gz
├── 20201003.cq4.gz
├── 20201004.cq4.gz
├── 20201005.cq4.gz
├── 20201006.cq4
├── chrongzip.sh
所有文件都在方案中标有日期YYYYMMDD.cq4.gz
(它们在 1 天后被压缩)。我想要做的是将超过 14 天的文件移动到/mnt/archive
. 有没有简单的方法来实现这一目标?
解决方案
我会建议这样的事情:
date="$(date -d "14 days ago" "+%Y%m%d")"
for file in 2*.cq4.gz; do [ "${file%%.*}" -gt "$date" ] || mv -- "$file" /mnt/archive/; done
推荐阅读
- kotlin - kotlin 对象的空指针/未解决的引用问题
- django - 如何在django中获取所选单选按钮的pk
- jenkins - 如何与 Jenkins 并行执行阶段?
- c# - 打开一个新的Unity项目时突然出现这么多错误
- graphql - ApolloClient - 如何传递数组而不是字符串?
- android - 在过滤 RecyclerView 项目并单击它后给出错误的项目
- c - 当 for 循环中有逗号而不是分号时没有编译器警告
- database - 如何从关系数据库中删除循环引用
- reactjs - 如何删除输入颜色选择器图像?
- c++ - 如何在 OpenGL 中使用立方体贴图数组来渲染带有阴影贴图的多个点光源?