
Ich versuche, alle Dateien zu finden, die seit 6 Monaten oder länger nicht mehr berührt wurden. Ich habe diesen Befehl ausgeführt, aber er zeigt nur alle Dateien an, die vor 6 Monaten bearbeitet wurden.
find . -type f -mtime 183 -exec ls -latr {} \;
Wie kann ich es schaffen, dass es 6 Monate oder mehr dauert?
Antwort1
-mtime 183
gilt für Dateien, deren Alter aufgerundet auf den nächsten 24-Stunden-Zeitraum 183 ergibt, also für Alter zwischen 182*24*3600 Sekunden (exklusiv) und 183*24*3600 Sekunden (einschließlich) (wobei Sekunden Unix-Sekunden sind, d. h. sie haben eine variable Dauer, die dem 86400. Teil des Erdentages entspricht und nicht der festen Dauer der ISO-Definition der Sekunde. Alle Tage dauern also 86400 Sekunden, Schaltsekunden müssen wir nicht berücksichtigen).
Mit -mtime +183
erhalten Sie Dateien, deren Alter, aufgerundet auf den nächsten 24-Stunden-Zeitraum, strikt größer als 183 ist, also für ein Alter strikt größer als 183*24*3600 Sekunden.
Beachten Sie, dass der 24-Stunden-Zeitraum nicht unbedingt dasselbe ist wieTagwegen der Umstellung auf die Sommerzeit in einigen Regionen.
Bei manchen find
Implementierungen (FreeBSD, GNU) können Sie auch verwenden ! -newermt '6 months ago'
. mt
Vergleicht die m
Änderungszeit mit der t
als Argument angegebenen Zeit.
Dadurch werden Dateien angezeigt, die vor dem gleichen Tag des Monats und zur gleichen Uhrzeit vor 6 Monaten geändert wurden. Im Fall von GNU find
(im Gegensatz zu FreeBSD) wird jedoch keine Sommerzeitanpassung vorgenommen (in Zeitzonen, in denen Sommerzeit gilt), d. h. Sie erhalten die Informationen wie in einer UTC-Zeitzone. Wenn jetzt der 01.07.2016 13:00 Uhr (Sommerzeit) ist, find
würde FreeBSD Dateien melden, die zuletzt vor dem 01.01.2016 13:00 Uhr (Winterzeit) geändert wurden, während GNU find
Dateien melden würde, die zuletzt vor dem 01.01.2016 12:00 Uhr (Winterzeit) geändert wurden. Es kann auch Abweichungen geben, wenn der Aufruf am 29., 30. oder 31. des Monats erfolgt und der Monat vor 6 Monaten kein solches Datum hat.
Antwort2
+
Fügen Sie vor dem Tageswert ein hinzu . Aus der Manpage:
Numeric arguments can be specified as
+n for greater than n,
-n for less than n,
n for exactly n.
Und
... When find figures out
how many 24-hour periods ago the file was last accessed, any
fractional part is ignored, so to match -atime +1, a file has to
have been accessed at least two days ago.
Obwohl sich dies auf den atime
Test bezieht, gilt es auch für die Tests mtime
und ctime
.