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

1076
hades

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

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 "$" 

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

1
Вы читали справочную страницу по tar? У него более новая опция ... find тоже, плюс регулярное выражение и! Xen2050 8 лет назад 1
Соответствует ли дата изменения файла дате в имени файла? Paul 8 лет назад 0
@Paul Да, это то же самое hades 8 лет назад 0

1 ответ на вопрос

1
Paul

find is probably the best bet if you want to run it yourself:

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

There is also a pretty standard tool for clearing up old files called logrotate which can match a pattern in a folder and do various tidyups, including compressing old files and deleting historics.

Похожие вопросы