У меня много файлов, которые генерирует один из моих скриптов ежедневно. Структура имени файла напоминает:

acity_data_2012-12-02.txt ,acity_data_2012-12-03.txt и так далее ...

Я хочу создать скрипт, который будет проверять данные за последний месяц. Например, сегодня --acity_data_2012-12-28.txt. Я бы создал список файлов за последние 30 дней. Любые файлы старше 30 дней (не в моем списке) будут затем перемещены в другой каталог.

Любое направление будет полезно.

1 ответ1

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .