Suchen Sie die Dateien, die in den letzten 24 Stunden geändert wurden

263

Beispielsweise läuft auf meinem Ubuntu-Computer ein MySQL-Server. Einige Daten wurden in den letzten 24 Stunden geändert.

Welche (Linux-) Skripte können die Dateien finden, die in den letzten 24 Stunden geändert wurden?

Bitte geben Sie die Dateinamen, Dateigrößen und die geänderte Zeit an.

JackWM
quelle

Antworten:

475

So finden Sie alle Dateien, die in den letzten 24 Stunden (letzter ganzer Tag) in einem bestimmten Verzeichnis und seinen Unterverzeichnissen geändert wurden:

find /directory_path -mtime -1 -ls

Sollte nach Ihren Wünschen sein

Das -Vorherige 1ist wichtig - es bedeutet, dass sich vor einem Tag oder weniger etwas geändert hat. Ein +Vorher 1würde stattdessen bedeuten, dass sich vor mindestens einem Tag etwas geändert hat, während nichts vor dem 1bedeutet hätte, dass es vor einem Tag geändert wurde, nicht mehr und nicht weniger.

Xavjer
quelle
17
nett! Wie wäre es mit den letzten 2 Stunden?
JackWM
114
Verwenden Sie "-mmin -120" anstelle von mtime
Xavjer
1
warum -vor dem numerischen Wert?
EsseTi
5
Das Argument für -mtime wird als Anzahl ganzer Tage im Alter der Datei interpretiert. -mtime + n bedeutet streng größer als, -mtime -n bedeutet streng kleiner als.
Xavjer
2
Für den Leser: Vergessen Sie nicht, das zu entfernen, -lswenn Sie es in einem Skript verwenden
duftend
41

Das kannst du machen mit

find . -mtime 0

Von man find:

Die Zeit seit der letzten Änderung jeder Datei wird durch 24 Stunden geteilt und der Rest wird verworfen. Das bedeutet, dass eine Datei, um mit -mtime 0 übereinzustimmen, in der Vergangenheit geändert werden muss, was weniger als 24 Stunden her ist.

Michael
quelle
25

Ein anderer, humanerer Weg:

find /<directory> -newermt "-24 hours" -ls

oder:

find /<directory> -newermt "1 day ago" -ls

oder:

find /<directory> -newermt "yesterday" -ls
Maxim Egorushkin
quelle
11

Auf GNU-kompatiblen Systemen (dh Linux):

find . -mtime 0 -printf '%T+\t%s\t%p\n' 2>/dev/null | sort -r | more

Dadurch werden Dateien und Verzeichnisse aufgelistet, die in den letzten 24 Stunden geändert wurden ( -mtime 0). Es listet sie mit der letzten geänderten Zeit in einem Format auf, das sowohl sortierbar als auch lesbar ist ( %T+), gefolgt von der Dateigröße ( %s), gefolgt vom vollständigen Dateinamen ( %p), die jeweils durch Tabulatoren ( \t) getrennt sind.

2>/dev/nullwirft alle stderr-Ausgaben weg, damit Fehlermeldungen das Wasser nicht trüben; sort -rsortiert die Ergebnisse nach den zuletzt zuerst geänderten; und | morelistet jeweils eine Ergebnisseite auf.

Stephen G Tuggy
quelle
2
Sie könnten auch | lessanstelle von verwenden | more, nehme ich an.
Stephen G Tuggy
7

Fügen Sie für andere, die in Zukunft hier landen (einschließlich mir), die Option -name hinzu, um bestimmte Dateitypen zu finden, z. B.: find /var -name "*.php" -mtime -1 -ls

resedasue
quelle
5

Dieser Befehl hat bei mir funktioniert

find . -mtime -1 -print
BhandariS
quelle