Arquivos tar do Linux dentro do intervalo de datas específico usando a data do nome do arquivo

1

Eu tenho arquivos cujos nomes começam com YYYYMMDD da seguinte forma:

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

Eu quero arquivos tar com "Report" no nome do arquivo e cujos nomes correspondem ao intervalo de 1 a 8 dias atrás. Por exemplo: hoje é 1º de março, então eu quero arquivos tar de 22 de fevereiro a 29 de fevereiro (hoje não inclusivos).

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[@]}"

Qual é o padrão que devo combinar?

    
por hades 01.03.2016 / 05:05

1 resposta

1

find é provavelmente a melhor aposta se você quiser executá-la você mesmo:

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

Há também uma ferramenta bastante padrão para limpar arquivos antigos chamados logrotate , que pode corresponder a um padrão em uma pasta e fazer vários ajustes, incluindo a compactação de arquivos antigos e a exclusão de históricos.

    
por 01.03.2016 / 06:50