检查文件名并根据日期进行过滤

检查文件名并根据日期进行过滤

我的一个脚本每天都会生成许多文件。文件名结构类似于:

capacity_data_2012-12-02.txt、capacity_data_2012-12-03.txt 等等……

我想创建一个脚本来检查上个月的数据。例如,今天是 capacity_data_2012-12-28.txt。我会创建一个过去 30 天的文件列表。任何超过 30 天的文件(不在我的列表中)都会被移动到另一个目录。

任何指示都会有帮助。

答案1

如果要移动超过 30 天的文件,或者更准确地说,移动过去 30 天内未写入的文件:

find . -maxdepth 1 -type f -name "capacity_data_???-??-??.txt" -mtime +30 -exec echo mv {} another_directory/ \;

echo当您对输出满意时,请删除。)

如果你想列出过去 30 天的文件:

awk 'BEGIN{now_n = systime() - 30 * 24 * 60 * 60;
           for(n = 30; n >= 0; n--) {
             print "capacity_data_" strftime("%Y-%m-%d", now_n) ".txt"
             now_n += 24* 60 * 60;
           }}'

如果你想循环播放这些文件:

files=$(awk 'BEGIN{now_n = systime() - 30 * 24 * 60 * 60;
                   for(n = 30; n >= 0; n--) {
                     print "capacity_data_" strftime("%Y-%m-%d", now_n) ".txt"
                     now_n += 24* 60 * 60;
                    }}')
for file in $files; do
  echo $file
done

相关内容