File tar Linux dalam rentang tanggal tertentu menggunakan tanggal nama file

1

Saya memiliki file yang namanya dimulai dengan YYYYMMDD seperti berikut:

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

Saya ingin tar file yang memiliki "Laporkan" dalam nama file dan yang namanya sesuai dengan kisaran 1-8 hari yang lalu. Misalnya: hari ini tanggal 1 Maret, jadi saya ingin tar file dari 22 Februari hingga 29 Februari (hari ini tidak termasuk).

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

Apa pola yang harus saya cocokkan?

neraka
sumber
1
Apakah Anda membaca halaman manual untuk tar? Ini memiliki opsi yang lebih baru ... temukan juga, plus regex dan!
Xen2050
Apakah tanggal modifikasi file sesuai dengan tanggal dalam nama file?
Paul
@ Paul Ya itu sama
hades

Jawaban:

1

find mungkin merupakan taruhan terbaik jika Anda ingin menjalankannya sendiri:

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

Ada juga alat yang cukup standar untuk membersihkan file lama yang disebut logrotateyang dapat cocok dengan pola dalam folder dan melakukan berbagai penyempurnaan, termasuk mengompresi file lama dan menghapus histori.

Paul
sumber