使用文件名日期在特定日期范围内的 Linux tar 文件

使用文件名日期在特定日期范围内的 Linux tar 文件

我有一些文件的名称以 YYYYMMDD 开头,如下所示:

20160221_143223_Report.csv
20160222_121223_Report.csv
           ...
20160229_141223_Report.csv
20160301_171223_Report.csv

我想要压缩文件名中包含“Report”且名称对应 1-8 天前的文件。例如:今天是 3 月 1 日,所以我想要压缩 2 月 22 日至 2 月 29 日(不包括今天)的文件。

files=($(ls |<HAS "Report" in filename> and  <WITHIN `date -d "8 days ago" '+%Y%m%d'> )) #output will be filenames that has the word "Report" and  from 22th to 29th FEB
tar cvfz oldfile.tar.gz "${files[@]}"

我应该匹配什么样的模式?

答案1

find如果你想自己运行它,可能是最好的选择:

find . -name '*Report.csv' -mtime +8 | xargs  tar -czvf  oldfile.tar.gz

还有一个非常标准的清理旧文件的工具,logrotate它可以匹配文件夹中的模式并进行各种整理,包括压缩旧文件和删除历史记录。

相关内容