Linux-TAR-Dateien innerhalb eines bestimmten Datumsbereichs mit Dateinamensdatum

1120
hades

Ich habe Dateien, deren Namen mit YYYYMMDD beginnen, wie folgt:

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

Ich möchte Dateien tarieren, die "Report" im Dateinamen haben und deren Namen dem Bereich vor 1-8 Tagen entsprechen. Zum Beispiel: Heute ist der 1. März, daher möchte ich Dateien vom 22. bis 29. Februar tarieren (heute nicht inklusive).

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

Welches Muster sollte ich anpassen?

1
Haben Sie die Manpage für tar gelesen? Es hat eine neuere Option ... Finden Sie auch, plus Regex und! Xen2050 vor 8 Jahren 1
Stimmt das Änderungsdatum der Datei mit dem Datum im Dateinamen überein? Paul vor 8 Jahren 0
@Paul Ja, es ist dasselbe hades vor 8 Jahren 0

1 Antwort auf die Frage

1
Paul

find ist wahrscheinlich die beste Wette, wenn Sie es selbst ausführen möchten:

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

Es gibt auch ein recht standardisiertes Werkzeug zum Aufräumen alter Dateien, logrotatedas mit einem Muster in einem Ordner abgeglichen werden kann, und verschiedene Aufräumarbeiten durchführen, darunter das Komprimieren alter Dateien und das Löschen von Historiken.