Nicht verwaltete Dateien finden, die älter als 6 Monate sind

Nicht verwaltete Dateien finden, die älter als 6 Monate sind

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 183gilt 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 +183erhalten 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 findImplementierungen (FreeBSD, GNU) können Sie auch verwenden ! -newermt '6 months ago'. mtVergleicht die mÄnderungszeit mit der tals 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, findwürde FreeBSD Dateien melden, die zuletzt vor dem 01.01.2016 13:00 Uhr (Winterzeit) geändert wurden, während GNU findDateien 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 atimeTest bezieht, gilt es auch für die Tests mtimeund ctime.

verwandte Informationen