Linux Find Command-Display-Dateien, die älter als 7 Tage sind - ohne Zeitstempel

447
Aditya

Es gibt einen Prozess, der Dateien in jeder halben und jeder Stunde erstellt. Ich möchte Dateien entfernen, die älter als 7 Tage sind.

Aber wenn ich diesen Befehl ausführt, wird das Entfernen der Datei älter als sieben Tage vom aktuellen Zeitstempel des Laufens sofort. Aber ich möchte nicht mit dem Zeitstempel entfernen. Ich möchte nur alle Dateien entfernen, die an oder vor diesem Tag erstellt wurden.

Befehl:

find <file_path> -mtime +6 -name 'sample_file01*.txt' -delete 

Wenn ich diesen Befehl am 09-11-2018 um 11:30 ausführen, werden Dateien vom 02-11-2018 11:00 und zuvor entfernt. Ich möchte nur alle Dateien vom 02-11-2018 entfernen.

Sollte ich einen anderen Befehl oder eine Änderung im obigen Suchbefehl verwenden?

Danke, Aditya

0

1 Antwort auf die Frage

0
AFH

Auf Ubuntu 18.04 findgibt es eine -daystartOption, mit der Sie tun können, was Sie wollen:

find <file_path> -daystart -mtime +5 -name 'sample_file01*.txt' -delete 

Sie müssen die Anzahl der Tage für den gewünschten Bereich um einen Tag reduzieren.

Wenn Sie diese Option nicht haben (z. B. unter OSX), können Sie Folgendes verwenden -mmin:

secsnow=$(date +%s) minstoday=$(($secsnow%86400/60)) minsago=$((5*1440+$minstoday)) find <file_path> -mmin +$minsago -name 'sample_file01*.txt' -delete 

Ich habe das in Stufen gezeigt, so dass die Arithmetik klar ist, aber es könnte alles mit einem einzigen arithmetischen Ausdruck als Parameter gemacht werden:

... -mmin $(($(date +%s)%86400/60+5*1440)) ... 
Danke AFH, mit '-daystart' klappte es. Sehr hilfreich Du hast mich gerettet ;) Aditya vor 5 Jahren 0