我的一个脚本每天都会生成许多文件。文件名结构类似于:
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