(7 Antworten)
Vor 7 Jahren geschlossen.
Wie kann ich sehen, wann eine Datei erstellt wurde. Ich habe mir die Manpage angesehen
ls -lc
ist für die letzte Änderung des Dateistatus
ls -lu
für die Zugriffszeit
ls -l
nicht genau angegeben wann, zuletzt geändert?
Ich habe diese ausprobiert, aber sie geben mir keine Zeit, wann die Datei erstellt wurde.
Akzeptierte Antwort:
Unter OS/X oder FreeBSD ist es die Option -U. Linux speichert jetzt auch die Geburts-/Erstellungszeit auf den meisten seiner nativen Dateisysteme, aber es gibt noch keine API, um sie abzurufen (2018 edit :seit Kernel 4.11 gibt es jetzt ein statx()
Systemaufruf und seit Glibc 2.28 ein Libc-Wrapper dafür und seit Coreutils 8.31 GNU stat
kann es anzeigen und (2021 bearbeiten ) seit 8.32 GNU ls
kann es mit --time=birth
anzeigen ).
Auf ext4-Dateisystemen können Sie jedoch debugfs verwenden, um es zu bekommen:
$ sudo debugfs /dev/some/fs
stat /some/file
[...]
crtime: 0x53208d7a:9045625c -- Wed Mar 12 16:38:18 2014
[...]
(wobei /some/file
ist der Pfad innerhalb dieses Dateisystems)
Informationen zu NTFS-Dateisystemen und unter der Annahme, dass Sie ntfs-3g zum Mounten verwenden, finden Sie unter Wie erhalte ich das Erstellungsdatum einer Datei auf einem logischen NTFS-Volume?
Wenn Sie ein ausreichend aktuelles Linux-System haben, können Sie xfs_io
verwenden ‘s statx
Unterbefehl zum Aufrufen des neuen statx()
Systemaufruf und erhalten Sie die Geburtszeit:
$ TZ=UTC0 xfs_io -c 'statx -v' /some/file
[...]
stat.btime = Thu Feb 7 17:11:20 2019
[...]
(hier in UTC-Zeit mit TZ=UTC0
da sonst das Datum nicht eindeutig wäre, da der UTC-Offset nicht ausgegeben wird). Oder mit statx -r
was Ihnen den Nanosekundenteil und eine leichter zu analysierende Zeit gibt:
$ xfs_io -c 'statx -r' /some/file
[...]
stat.btime.tv_sec = 1549559480
stat.btime.tv_nsec = 964691587
[...]
Mit GNU stat
8.31 oder neuer auf Systemen mit glibc 2.28 oder neuer und einem Kernel 4.11 oder neuer:
$ stat /some/file | grep Birth:
Birth: 2018-05-24 16:27:28.415875403 +0100
$ stat -c '%.9W %w' /some/file
1527175648.415875403 2018-05-24 16:27:28.415875403 +0100
Mit GNU ls
8.32 oder neuer auf Systemen mit glibc 2.28 oder neuer und einem Kernel 4.11 oder neuer:
$ ls -l --time=birth --full-time /some/file
-rw-r--r-- 1 stephane stephane 2333836 2018-05-24 16:27:28.415875403 +0100 /some/file
Traditionell hat Unix keine Erstellungszeit gespeichert.
Beachten Sie, dass dieser Wert möglicherweise weniger Bedeutung hat, als Sie vielleicht denken.
Die Änderungszeit spiegelt das Alter der Daten in dieser Datei wider, die Zugriffszeit wann zuletzt darauf zugegriffen wurde, die Inode-Änderungszeit ist zum Beispiel für Backup-Software sehr nützlich, da Sie nichts über diese Datei wissen, die sich seit dieser Zeit geändert hat (außer möglicherweise ihrem vollständigen Pfad, für den Sie sich die ctime ihrer Verzeichniskomponenten ansehen können).
Verwandt:Problem mit Bundleconfig-Datei?Die Erstellungszeit ist, wenn der Inode entsteht (naja, hatte eine Linkanzahl von 0 bis 1, dieser Inode wurde möglicherweise in einem früheren Leben zugewiesen und entfernt), spiegelt er nicht das Alter von Daten wider, die mit dieser Datei verbunden sind (Daten sind geschrieben, nachdem die Datei erstellt wurde), sagt es uns nicht, ob eine Datei durch diesen Pfad zu diesem Zeitpunkt entstanden ist (die Datei, die wir betrachten, kann unter einem anderen Pfad erstellt und später dorthin verlinkt oder verschoben worden sein).