Linux tar файлы в определенном диапазоне дат, используя дату файла

у меня есть файлы, имена которых начинаются с YYYYMMDD следующим образом:

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

Я хочу tar файлы, которые имеют" отчет " в имени файла и чьи имена соответствуют диапазону 1-8 дней назад. Например: сегодня 1 марта, поэтому я хочу tar-файлов с 22 февраля по 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[@]}"

что картина которой я должен соответствовать?

6
задан Toby Speight
04.03.2023 2:17 Количество просмотров материала 3185
Распечатать страницу

1 ответ

find - пожалуй, лучший выбор, если вы хотите запустить его сам:

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

там тоже довольно стандартный инструмент для очистки старых файлов под названием logrotate который может соответствовать шаблону в папке и делать различные исправления, включая сжатие старых файлов и удаление историй.

1
отвечен Paul 2023-03-05 10:05

Постоянная ссылка на данную страницу: [ Скопировать ссылку | Сгенерировать QR-код ]

Ваш ответ

Опубликуйте как Гость или авторизуйтесь

Имя
Вверх