88 votes

Comment obtenir la date/heure de création d'un fichier dans Bash/Debian ?

J'utilise Bash sur Debian GNU/Linux 6.0. Est-il possible d'obtenir la date et l'heure de création du fichier ? Pas la date et l'heure de modification. ls -lh a.txt y stat -c %y a.txt les deux ne donnent que le temps de modification.

91voto

mikyra Points 3595

Malheureusement votre quête ne sera pas possible en général, car il n'y a que 3 valeurs de temps distinctes stockées pour chacun de vos fichiers comme défini par la norme POSIX (voir Définitions de base section 4.8 Mise à jour des temps de fichiers )

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

EDIT : Comme mentionné dans les commentaires ci-dessous, selon le système de fichiers utilisé, les métadonnées peuvent contenir la date de création du fichier. Notez cependant que le stockage de ce type d'information n'est pas standard. Le fait de dépendre de cette information peut conduire à des problèmes de portabilité lors du passage à un autre système de fichiers, au cas où celui qui est réellement utilisé la stocke de toute façon.

44voto

user2725883 Points 166
ls -i file #output is for me 68551981
debugfs -R 'stat <68551981>' /dev/sda3 # /dev/sda3 is the disk on which the file exists

#results - crtime value
[root@loft9156 ~]# debugfs -R 'stat <68551981>' /dev/sda3
debugfs 1.41.12 (17-May-2010)
Inode: 68551981   Type: regular    Mode:  0644   Flags: 0x80000
Generation: 769802755    Version: 0x00000000:00000001
User:     0   Group:     0   Size: 38973440
File ACL: 0    Directory ACL: 0
Links: 1   Blockcount: 76128
Fragment:  Address: 0    Number: 0    Size: 0
 ctime: 0x526931d7:1697cce0 -- Thu Oct 24 16:42:31 2013
 atime: 0x52691f4d:7694eda4 -- Thu Oct 24 15:23:25 2013
 mtime: 0x526931d7:1697cce0 -- Thu Oct 24 16:42:31 2013
**crtime: 0x52691f4d:7694eda4 -- Thu Oct 24 15:23:25 2013**
Size of extra inode fields: 28
EXTENTS:
(0-511): 352633728-352634239, (512-1023): 352634368-352634879, (1024-2047): 288392192-288393215, (2048-4095): 355803136-355805183, (4096-6143): 357941248-357943295, (6144
-9514): 357961728-357965098

28voto

jason Points 61

La réponse de mikyra est bonne. le fait est juste comme ce qu'il a dit.

[jason@rh5 test]$ stat test.txt
  File: `test.txt'
  Size: 0               Blocks: 8          IO Block: 4096   regular empty file
Device: 802h/2050d      Inode: 588720      Links: 1
Access: (0664/-rw-rw-r--)  Uid: (  500/   jason)   Gid: (  500/   jason)
Access: 2013-03-14 01:58:12.000000000 -0700
Modify: 2013-03-14 01:58:12.000000000 -0700
Change: 2013-03-14 01:58:12.000000000 -0700

Si vous voulez vérifier quel fichier a été créé en premier, vous pouvez structurer votre nom de fichier en ajoutant la date système lorsque vous créez une série de fichiers.

15voto

unit3 Points 81

Notez que si vous avez monté votre système de fichiers avec noatime pour des raisons de performance, alors atime indiquera probablement l'heure de création. Étant donné que noatime entraîne une augmentation massive des performances (en supprimant une écriture sur le disque à chaque fois qu'un fichier est lu), il peut s'agir d'une option de configuration judicieuse qui vous donne également les résultats que vous souhaitez.

7voto

La date/heure de création est normalement no stockée. Donc non, vous ne pouvez pas.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X