1. zu einer Zeit

1. zu einer Zeit

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 -lgibt an, wann der Dateiinhalt zuletzt geändert wurde,mtime
  • ls -lcgibt den Zeitpunkt der letzten Änderung des Dateistatus aus ctime(Was ist der Unterschied?)
  • ls -lugibt die letzte Zugriffszeit aus, die atime(obwohl die Nützlichkeit dieses KonzeptsGegenstand der Diskussion)

Und natürlich ctimewird 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 -xin 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 ( lessoder 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.13in 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: -

verwandte Informationen