Suchen Sie eine Datei, die 30 Minuten alt ist

12

Wie finde ich die 30 Minuten alte Datei /bin/ksh?

Aravind
quelle
4
Meinen Sie "hatte seinen Inhalt vor 30 Minuten geändert" oder "existierte nicht, bis er vor 30 Minuten erstellt wurde"? Welches Betriebssystem verwenden Sie? Unterschiedliche Betriebssysteme werden mit unterschiedlichen Versionen von geliefert find.
Mark Plotnick
@ Mark Plotnick Ich möchte die Datei finden, die 30 Minuten alt waren
Aravind
Ich denke, er / sie meint, wurde vor 30 Minuten erstellt . Als ob zB jemand X alt ist, wurde er / sie vor X Mal geboren.
Erik

Antworten:

14

Unter Linux gibt es keine Spur der Erstellungszeit einer Datei. Sie können nur zugreifen auf:

  • die letzte Änderungszeit des Inhalts (eine Erstellung zählt natürlich als Änderung) mtime,,
  • die letzte Zugriffszeit, atime,
  • die letzte Änderungszeit der Metadaten , ctime.

Wenn Sie mit einem auf diesen Zeiten basierenden Test nach Dateien suchen möchten, kann find( man find) Ihnen helfen.

Sie würden es auf diese Weise verwenden, um eine Datei zu finden, auf die vor genau 30 Minuten in Ihrem aktuellen Verzeichnis und seinen Unterverzeichnissen zugegriffen wurde:

find -amin 30

Normalerweise sollten Sie ein Intervall verwenden, da es schwierig sein kann, eine genaue Anzahl von Minuten anzugeben:

find -amin +25 -amin -35

Hier werden Dateien gefunden, auf die vor mehr als 25, aber weniger als 35 Minuten zugegriffen wurde.

Und wenn Sie nur an der Änderungszeit und nicht an der Zugriffszeit (dh der Lesezeit) interessiert sind, ersetzen Sie diese -amindurch -mmin.

lgeorget
quelle
du willst keine Zeit. Zeit ist Zugriffszeit.
Strg-Alt-Delor
@richard Das OP hat nicht angegeben, was er so meinte ... Wie auch immer, ich habe mtimeauch die Antwort
eingegeben
1
@ lgeorget, wenn ich es benutze -mtime 30, zeigte die Dateien 30 Tage alt.
Aravind
@ user2910201 Ups dumm mich. XtimeOptionen sind für Tage und XminOptionen für Minuten. Mein schlechtes, ich bearbeite die Antwort
lgeorget
2
@ user2910201 aber beachten Sie, dass Sie Xtimemit jeder vernünftigen Zeiteinheit wie 30mfür 30 Minuten oder 5dfür fünf Tage verwenden können
lgeorget
3

Sie können dies verwenden mtime, um:

find . -mmin 30    #exactly 30 minutes old
Ryekayo
quelle
Dies wird Ihnen die Dateien sagen, die createdoder modified30 Minuten zurück waren
g4ur4v
@ g4ur4v, wenn ich es benutze -mmin, wird angezeigt , -mminist keine gültige Option
Aravind
Probieren Sie dies aus:find /path -mtime +30m
Ryekayo
-mminIch bin mir nicht sicher, warum es nicht erkannt wird. Ich habe viele Beispiele mit diesem Befehl
nachgeschlagen
3

Ohne GNU/BSD find

TZ=ZZZ0 touch -t "$(TZ=ZZZ0:30 date +%Y%m%d%H%M.%S)" /reference/file

und dann find . -newer /reference/file

Lösung von Stéphane Chazelas

Aravind
quelle