(7 réponses)
Fermé il y a 7 ans.
Comment puis-je voir quand un fichier a été créé. J'ai regardé la page de manuel
ls -lc
est pour la dernière modification de l'état du fichier
ls -lu
pour le temps d'accès
ls -l
pas exactement indiqué à quelle heure, dernier changement ?
J'ai essayé ceux-ci, mais ils ne me donnent pas le temps de créer le fichier.
Réponse acceptée :
Sous OS/X ou FreeBSD, c'est l'option -U. Linux stocke désormais également l'heure de naissance/création sur la plupart de ses systèmes de fichiers natifs, mais il n'y a pas encore d'API pour la récupérer (édition 2018 :depuis le noyau 4.11, il y a maintenant un statx()
appel système, et depuis glibc 2.28 un wrapper libc pour lui et depuis coreutils 8.31, GNU stat
peut l'afficher, et (édition 2021 ) depuis 8.32 GNU ls
peut l'afficher avec --time=birth
).
Sur les systèmes de fichiers ext4, vous pouvez cependant utiliser debugfs pour l'obtenir :
$ sudo debugfs /dev/some/fs
stat /some/file
[...]
crtime: 0x53208d7a:9045625c -- Wed Mar 12 16:38:18 2014
[...]
(où /some/file
est le chemin dans ce système de fichiers)
Pour les systèmes de fichiers NTFS, et en supposant que vous utilisez ntfs-3g pour le monter, consultez Comment obtenir la date de création d'un fichier sur un volume logique NTFS ?
Si vous avez un système Linux assez récent, vous pouvez utiliser xfs_io
statx
sous-commande pour invoquer le nouveau statx()
appel système et obtenir l'heure de naissance :
$ TZ=UTC0 xfs_io -c 'statx -v' /some/file
[...]
stat.btime = Thu Feb 7 17:11:20 2019
[...]
(ici en utilisant l'heure UTC avec TZ=UTC0
sinon la date serait ambiguë car le décalage UTC n'est pas sorti). Ou avec statx -r
qui vous donne la partie nanoseconde et un temps plus facilement analysable :
$ xfs_io -c 'statx -r' /some/file
[...]
stat.btime.tv_sec = 1549559480
stat.btime.tv_nsec = 964691587
[...]
Avec GNU stat
8.31 ou plus récent sur les systèmes avec glibc 2.28 ou plus récent et un noyau 4.11 ou plus récent :
$ 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
Avec GNU ls
8.32 ou plus récent sur les systèmes avec glibc 2.28 ou plus récent et un noyau 4.11 ou plus récent :
$ 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
Traditionnellement, Unix ne stockait pas d'heure de création.
Notez que cette valeur a peut-être moins de sens que vous ne le pensez.
Le temps de modification reflète l'âge des données dans ce fichier, le temps d'accès lors du dernier accès, l'heure de changement d'inode est très utile pour les logiciels de sauvegarde par exemple, car vous ne savez rien sur ce fichier qui a changé depuis ce temps (sauf éventuellement son chemin complet pour lequel vous pouvez consulter le ctime de ses composants de répertoire).
En relation :problème avec le fichier bundleconfig ?Le temps de création est lorsque l'inode apparaît (bien avait un nombre de liens allant de 0 à 1, cet inode aurait pu être alloué et supprimé dans une vie précédente), il ne reflète pas l'âge des données associées à ce fichier (les données sont écrit après la création du fichier), il ne nous dit pas si un fichier par ce chemin a vu le jour à ce moment-là (le fichier que nous examinons peut avoir été créé avec un chemin différent et lié ou déplacé plus tard).