首页 > 解决方案 > 使用 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. 有没有简单的方法来实现这一目标?

标签: linuxbashfilesystems

解决方案


我会建议这样的事情:

date="$(date -d "14 days ago" "+%Y%m%d")"
for file in 2*.cq4.gz; do [ "${file%%.*}" -gt "$date" ] || mv -- "$file" /mnt/archive/; done

推荐阅读