75 votes

Comment vérifier tous les horodatages d'un fichier ?

Existe-t-il une commande sous Linux pour vérifier tous les timestamps d'un fichier ?

J'essaie de voir les dernières dates de modification, de création et de toucher du fichier.

96voto

slhck Points 209720

La commande est appelée stat .

$ 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

Si vous souhaitez ajuster le format, reportez-vous aux pages de manuel, car la sortie est spécifique au système d'exploitation et varie sous Linux/Unix.

En général, vous pouvez également obtenir ces temps par le biais d'une inscription normale dans un annuaire :

  • ls -l sorties la dernière fois que le contenu du fichier a été modifié, les mtime
  • ls -lc le dernier moment de la modification de l'état du fichier, le ctime ( Quelle est la différence ? )
  • ls -lu Le dernier temps d'accès aux sorties, le atime (bien que l'utilité de ce concept soit sujet à discussion )

Et bien sûr, ctime n'enregistre pas la date de "création" d'un fichier. La spécification POSIX ne définit que trois timestamps, mais certains systèmes de fichiers Linux stocker l'heure de naissance/l'heure de création. Comment trouver la date de création d'un fichier ? Sur une telle configuration supportée, on pourrait utiliser

stat --printf '%n\nmtime: %y\nctime: %z\natime: %x\ncrtime:%w\n'

25voto

YaOzI Points 549

Il n'y a que THREE des valeurs de temps distinctes stockées pour chacun de vos fichiers, comme défini par le Norme POSIX : http://pubs.opengroup.org/onlinepubs/9699919799/ (voir Définitions de base section -> 4. Concepts généraux -> 4.8 Fichier Mise à jour des temps)

Chaque fichier a trois horodatages distincts associés : l'heure du dernier accès aux données l'heure de la dernière modification des données et le moment où le dernier changement d'état du fichier . Ces valeurs sont renvoyées dans la structure de caractéristiques de fichier struct stat, comme décrit dans _<sys/stat.h>_ .

Et de <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.

Les exemples suivants montrent la différence entre les atime , mtime y ctime Ces exemples sont dans GNU/Linux BASH. Vous pouvez utiliser stat -x sous Mac OS X ou autre BSD Dist. pour voir le format de sortie similaire.

$ 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

Lorsque le fichier vient d'être créé, trois horodatages sont les mêmes.


1. atime

D'abord. accès les données du fichier en le lisant ( less o vim ), l'imprimer ( cat ) ou le copier dans un autre fichier ( 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

Maintenant. changement le statut du fichier, en modifiant la permission ( chmod ) ou le renommer ( mv )

$ chmod u+x test
$ stat stet
  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!

Notez que jusqu'à présent, le contenu ( données ) du fichier est toujours le même que lors de sa création.


3. mtime

Enfin, il faut modifier le contenu du fichier en l'éditant.

$ 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. l'heure de naissance

Notez également que la nouvelle version de stat (par exemple stat --version 8.13 dans Ubuntu 12.04) dispose d'une 4ème information d'horodatage - les Heure de naissance (heure de création du fichier). Bien qu'il puisse ne pas afficher l'heure correcte pour le moment :

$ 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: -

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X