Ich habe viele tägliche Backup-Archive. Um die Festplattennutzung zu verwalten, benötige ich ein Bash-Skript, das alle Dateien löscht, die älter als 1 Monat sind, aber alle Dateien, die montags erstellt wurden, behalten, auch wenn sie älter als 1 Monat sind.
Dies löscht zum Beispiel alle Dateien, die vor mehr als 30 Tagen zuletzt geändert wurden:
%Vor%Aber ich weiß nicht wirklich, wie man montags erstellte Dateien behält.
Etwas einfachere und vorsichtigere Version von @ JoSos Antwort:
%Vor%Die Unterschiede:
date -r
, um das letzte Änderungsdatum einer Datei direkt zu erhalten %a
, um mit verständlicheren Wochentagsnamen zu arbeiten rm ""
zurück, um zu überprüfen, was gelöscht wird. Wenn es gut aussieht, dann kleben Sie entweder | sh
am Ende, um wirklich auszuführen, oder entfernen Sie die echo
Allerdings weist @JoSo zu Recht darauf hin, dass date +%a
Gebietsschema-abhängig ist, daher wären diese Versionen in der Tat sicherer:
Da find
meines Wissens keine Wochentagsüberprüfung hat, müssen Sie ein externes Programm aufrufen.
Update: Mit -r
wechseln zu date
(Kudos zu Janos) und nur testen, nicht innerhalb der Shell-Befehl löschen wahrscheinlich ergibt die sauberste mögliche Version:
können Sie
verwenden %Vor%um das Datum zu erhalten, an dem die Datei erstellt wurde.
Entpacken Sie das Datum mit cut, um eine Var wie myvar = yyyymmdd
zu erhaltenund schließlich
%Vor%es wird den Wochentag zurückgeben, wenn es 1 zurückgibt, war es Montag. In meinem Fall gibt es 4, weil 22/08/2013 ein Donnerstag war
Edit: Wenn Sie alle diese als eine einfache Befehlszeile als Jo arbeiten können Also vorschlagen, es ist besser!