1

У меня есть файлы, имена которых начинаются с ГГГГММДД, например:

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

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

Какой шаблон я должен соответствовать?

1 ответ1

1

find , вероятно, лучшая ставка, если вы хотите запустить ее самостоятельно:

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

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

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