
Gibt es in Linux einen Befehl, um alle Zeitstempel einer Datei zu überprüfen?
Ich versuche, die Daten der letzten Änderung, Erstellung und Bearbeitung der Datei anzuzeigen.
Antwort1
Der Befehl heißtstat
.
$ stat test
234881026 41570368 -rw-r--r-- 1 werner staff 0 0 "Feb 7 16:03:06 2012" "Feb 7 16:03:06 2012" "Feb 7 16:03:06 2012" "Feb 7 16:03:06 2012" 4096 0 0 test
Wenn Sie das Format anpassen möchten, beachten Sie die Manpages, da die Ausgabe betriebssystemabhängig ist und unter Linux/Unix variiert.
Im Allgemeinen können Sie die Zeiten auch über einen normalen Verzeichniseintrag abrufen:
ls -l
gibt an, wann der Dateiinhalt zuletzt geändert wurde,mtime
ls -lc
gibt den Zeitpunkt der letzten Änderung des Dateistatus ausctime
(Was ist der Unterschied?)ls -lu
gibt die letzte Zugriffszeit aus, dieatime
(obwohl die Nützlichkeit dieses KonzeptsGegenstand der Diskussion)
Und natürlich ctime
wird nicht aufgezeichnet, wann eine Datei "erstellt" wurde. Die POSIX-Spezifikation definiert nur drei Zeitstempel, abereinige Linux-DateisystemeGeburtszeit/Erstellungszeit speichern.Wie finde ich das Erstellungsdatum einer Datei?Auf einer solchen unterstützten Konfiguration könnte man verwenden
stat --printf '%n\nmtime: %y\nctime: %z\natime: %x\ncrtime:%w\n'
Antwort2
Es sind nurDREIfür jede Ihrer Dateien werden unterschiedliche Zeitwerte gespeichert, wie in derPOSIX-Standard:http://pubs.opengroup.org/onlinepubs/9699919799/(sehenBasisdefinitionenAbschnitt -> 4. Allgemeine Konzepte -> 4.8 Dateizeiten-Update)
Jede Datei hat drei unterschiedliche Zeitstempel: die Zeit der letztenDatenzugriff, die Zeit des letztenDatenänderungund die Zeit, dieDateistatus zuletzt geändertDiese Werte werden in der Dateimerkmalstruktur struct stat zurückgegeben, wie in<sys/stat.h>.
Und von<sys/stat.h>:
atime is for Last data access timestamp.
mtime is for Last data modification timestamp.
ctime is for Last file status change timestamp.
Die folgenden Beispiele zeigen den Unterschied zwischen deneine Zeit,mZeitUndcZeit, diese Beispiele sind in GNU/Linux BASH. Sie können es stat -x
in Mac OS X oder anderen BSD-Distributionen verwenden, um das ähnliche Ausgabeformat anzuzeigen.
$ stat --version
stat (GNU coreutils) 8.4
Copyright (C) 2010 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>.
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
Written by Michael Meskes.
$
$ touch test
$ stat test
File: `test'
Size: 0 Blocks: 0 IO Block: 4096 regular empty file
Device: 811h/2065d Inode: 98828525 Links: 1
Access: (0664/-rw-rw-r--) Uid: ( 514/ rank) Gid: ( 514/ rank)
Access: 2014-03-16 10:58:28.609223953 +0800
Modify: 2014-03-16 10:58:28.609223953 +0800
Change: 2014-03-16 10:58:28.609223953 +0800
Wenn die Datei gerade erstellt wurde, sind die drei Zeitstempel gleich.
1. zu einer Zeit
Lassen Sie uns zunächstZugangSie können die Daten der Datei lesen ( less
oder vim
), ausdrucken ( cat
) oder in eine andere Datei kopieren ( cp
).
$ cat test #Nothing will be printed out, since the file is empty
$ stat test
File: `test'
Size: 0 Blocks: 0 IO Block: 4096 regular empty file
Device: 811h/2065d Inode: 98828525 Links: 1
Access: (0664/-rw-rw-r--) Uid: ( 514/ rank) Gid: ( 514/ rank)
Access: 2014-03-16 10:59:13.182301069 +0800 <-- atime Changed!
Modify: 2014-03-16 10:58:28.609223953 +0800
Change: 2014-03-16 10:58:28.609223953 +0800
2. ctime
Jetzt lass unsändernden Dateistatus, indem Sie die Berechtigung ändern ( chmod
) oder die Datei umbenennen ( mv
)
$ chmod u+x test
$ stat test
File: `test'
Size: 0 Blocks: 0 IO Block: 4096 regular empty file
Device: 811h/2065d Inode: 98828525 Links: 1
Access: (0764/-rwxrw-r--) Uid: ( 514/ rank) Gid: ( 514/ rank)
Access: 2014-03-16 10:59:13.182301069 +0800
Modify: 2014-03-16 10:58:28.609223953 +0800
Change: 2014-03-16 11:04:10.178285430 +0800 <-- ctime Changed!
$
$ mv test testing
$ stat testing
File: `testing'
Size: 0 Blocks: 0 IO Block: 4096 regular empty file
Device: 811h/2065d Inode: 98828525 Links: 1
Access: (0764/-rwxrw-r--) Uid: ( 514/ rank) Gid: ( 514/ rank)
Access: 2014-03-16 10:59:13.182301069 +0800
Modify: 2014-03-16 10:58:28.609223953 +0800
Change: 2014-03-16 11:06:33.342207679 +0800 <-- ctime Changed again!
Beachten Sie, dass bis jetzt der Inhalt (Daten) der Datei ist immer noch dieselbe wie zum Zeitpunkt ihrer Erstellung.
3. mZeit
Lassen Sie uns abschließendändernden Inhalt der Datei, indem Sie die Datei bearbeiten.
$ echo 'Modify the DATA of the file' > testing
$ echo 'Modify the DATA of the file also change the file status' > testing
$ stat testing
File: `testing'
Size: 56 Blocks: 8 IO Block: 4096 regular file
Device: 811h/2065d Inode: 98828525 Links: 1
Access: (0764/-rwxrw-r--) Uid: ( 514/ rank) Gid: ( 514/ rank)
Access: 2014-03-16 10:59:13.182301069 +0800
Modify: 2014-03-16 11:09:48.247345148 +0800 <-- mtime Changed!
Change: 2014-03-16 11:09:48.247345148 +0800 <-- ctime also Changed!
4. Geburtszeit
Beachten Sie auch, dass die neueren Versionen stat
(z. B. stat --version 8.13
in Ubuntu 12.04) einen vierten Zeitstempel haben - denGeburtszeit(Dateierstellungszeit). Obwohl derzeit möglicherweise nicht die richtige Zeit angezeigt wird:
$ stat --version
stat (GNU coreutils) 8.13
Copyright (C) 2011 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later.
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
Written by Michael Meskes.
$
$ stat birth_time
File: `birth_time'
Size: 0 Blocks: 0 IO Block: 4096 regular empty file
Device: 805h/2053d Inode: 4073946 Links: 1
Access: (0664/-rw-rw-r--) Uid: ( 1000/ bingyao) Gid: ( 1000/ bingyao)
Access: 2014-03-16 10:46:48.838718970 +0800
Modify: 2014-03-16 10:46:48.838718970 +0800
Change: 2014-03-16 10:46:48.838718970 +0800
Birth: -