Verwenden Sie find -mmin, um Dateien mit zukünftiger Änderungszeit zu finden

9

ich kann nutzen

find . -mmin -5

um Dateien zu finden, die in den letzten 5 Minuten geändert wurden. Wenn ich jedoch versuche, Dateien mit Änderungszeit in der Zukunft zu finden, indem ich eine negative Zahl gebe, findlehnt dies ab:

find . -mmin --1

Gibt es eine Möglichkeit, dem Standard-Linux in Zukunft Änderungszeit zu geben find?

Muxecoid
quelle

Antworten:

9

Verwenden Sie Folgendes, um Dateien zu finden, die mindestens 5 Tage in der Zukunft geändert wurden:

find . -newermt "5 days"

Die Syntax für die Zeitangabe entspricht der für date -d. Siehe man findfür Informationen über den Schalter genannt -newerXYfür weitere Informationen.

Es ist nicht möglich, zB dazu -mminzu verwenden. Es wurde als Fehler gegen GNU find gemeldet und durch Implementierung -newerXYin findutils 4.3.3 (~ 2007) behoben, wie ich oben gezeigt habe.


Anscheinend wurde nicht der GNU-Fund verwendet, sondern BusyBox.

Sie sollten dann in der Lage sein, eine temporäre Datei mit touch -dund einem Datum in der Zukunft zu erstellen und dann den -newerSchalter für findFolgendes zu verwenden:

touch -d "+5 days" tmpfile
find . -newer tmpfile

BusyBox touchunterstützt dieses Datumsformat nicht, aber das Prinzip ist dasselbe und seine findUnterstützung -newer. Das Erstellen der Referenzdatei mit einem korrekten Datum bleibt dem Leser als Übung (immer bequem zu schreiben).

Daniel Andersson
quelle
Vielen Dank. Mein Problem ist, dass mein Fund ein alter eingebetteter BusyBox-Fund ist und kein binutil-Fund. Anscheinend funktioniert der Standard-Linux-Weg hier nicht. :(
Muxecoid
@Muxecoid: Ich habe meine Antwort mit einigen BusyBox-Bemerkungen aktualisiert.
Daniel Andersson
Dies ersparte mir nur Probleme auf einem neuen Computer, auf dem ich versehentlich zehn Stunden in der Zukunft gearbeitet hatte (Zeitzonenversatz wurde auf eine bereits versetzte Hardware-Uhr angewendet), und nach dem Reparieren der Uhr configurebeschwerte sich ein Skript über zukünftige Dinge (durch einen noch anderthalb Stunden): find . -newermt '1 hour' | xargs touch -d '-9 hours'und ich kann weitermachen. :-)
Chris Morgan