Wie erhalte ich das Dateierstellungsdatum unter Linux?

7

Ich arbeite mit Stapeln von Dateien, die Informationen über das gleiche Objekt zu unterschiedlichen Zeiten enthalten, und die einzige Möglichkeit, sie zu bestellen, ist das Erstellungsdatum. Ich benutzte das:

%Vor%

Aber das scheint nicht zu funktionieren. Was mache ich falsch? Gibt es andere, zuverlässigere / einfachere Methoden, um das Datum der Dateierstellung unter Linux zu erhalten?

    
Srv19 08.05.2011, 18:33
quelle

4 Antworten

7

fstat arbeitet mit Dateideskriptoren, nicht mit FILE-Strukturen. Die einfachste Version:

%Vor%

Sie müssen herausfinden, ob Ihr System st_birthtime in seiner stat-Struktur hat, indem Sie sys / stat.h überprüfen oder eine Art autoconf-Konstrukt verwenden.

    
Mel 08.05.2011, 18:54
quelle
10

Die nächste Annäherung an 'creation date' ist das st_ctime -Member in struct stat , das aber tatsächlich die letzte Änderung des inode anzeigt. Wenn Sie die Datei erstellen und niemals ihre Größe oder Berechtigungen ändern, funktioniert dies als Erstellungszeit. Ansonsten gibt es keine Aufzeichnung darüber, wann die Datei erstellt wurde, zumindest in Standard-Unix-Systemen.

Sortieren Sie für Ihre Zwecke nach st_mtime ... oder rufen Sie die Dateien mit einem Zeitstempel im Namen auf.

Beachten Sie, dass die Erstellungszeit verfügbar ist, wenn Sie Darwin (Mac OS X) verwenden. Auf der Manpage für stat(2) :

  

Wenn jedoch das Makro _DARWIN_FEATURE_64_BIT_INODE definiert ist, wird die Stat-Struktur nun wie folgt definiert:

%Vor%

Beachten Sie das Feld st_birthtimespec . Beachten Sie auch, dass alle Zeiten in struct timespec -Werten sind, also gibt es eine Zeit in der Sekunde ( tv_nsec ergibt eine Auflösung im Nanosekundenbereich). POSIX 2008 <sys/stat.h> benötigt die struct timespec -Zeit für die Standardzeiten ; Darwin folgt dem.

    
Jonathan Leffler 08.05.2011 18:39
quelle
6

Um das Dateierstellungsdatum in Linux zu erhalten, verwende ich die folgende Methode

%Vor%

atime: Zuletzt Datei wurde geöffnet oder ausgeführt

ctime: Zeit, zu der die Inode-Information aktualisiert wurde. ctime wird auch aktualisiert, wenn die Datei geändert wird

mtime: Zuletzt geänderte Zeit

Zeit: Dateierstellungszeit

    
Sathish 07.01.2013 06:56
quelle
5

Die Dateierstellungszeit wird nirgendwo gespeichert. Sie können nur eines der folgenden Elemente abrufen:

%Vor%

Ihr Code sollte Ihnen jedoch die letzte Änderungszeit geben. Hinweis: Sie können stat() anstelle von fstat() verwenden, ohne die Datei zu öffnen ( stat() übernimmt den Dateinamen als Parameter).

    
Code Painters 08.05.2011 18:38
quelle

Tags und Links