Je veux connaître la date de création d'un fichier particulier, pas la date de modification ou la date d'accès.
J'ai essayé avec ls -ltrh
et stat filename
.
Réponse acceptée :
stat -c '%w' file
sur les systèmes de fichiers qui stockent l'heure de création.
Notez que sous Linux, cela nécessite coreutils
8.31, glibc
2.28 et noyau version 4.11 ou plus récent.
La norme POSIX ne définit que trois horodatages distincts à stocker pour chaque fichier :l'heure du dernier accès aux données, l'heure de la dernière modification des données et l'heure à laquelle l'état du fichier a changé pour la dernière fois.
Les systèmes de fichiers Linux modernes, tels que ext4, Btrfs, XFS (v5 et versions ultérieures) et JFS, stockent l'heure de création du fichier (c'est-à-dire l'heure de naissance), mais utilisent des noms différents pour le champ en question (crtime
en ext4/XFS, otime
dans Btrfs et JFS). Linux fournit l'interface d'appel système statx(2) pour récupérer l'heure de naissance du fichier pour les systèmes de fichiers qui la prennent en charge depuis la version 4.11 du noyau. (Ainsi, même lorsque la prise en charge du temps de création a été ajoutée à un système de fichiers, certains noyaux déployés ne l'ont pas immédiatement pris en charge, même après avoir ajouté la prise en charge nominale de cette version du système de fichiers, par exemple XFS v5.)
Comme l'ont souligné Craig Sanders et Mohsen Pahlevanzadeh, stat
prend en charge le %w
et %W
spécificateurs de format pour afficher l'heure de naissance du fichier (respectivement dans un format lisible par l'homme et en secondes depuis Epoch) avant coreutils
version 8.31. Cependant, coreutils
stat
utilise le statx()
appel système si disponible pour récupérer l'heure de naissance uniquement depuis la version 8.31.
Avant coreutils
version 8.31 stat
accédé à l'heure de naissance via get_stat_birthtime()
fourni par gnulib (dans lib/stat-time.h
), qui obtient l'heure de naissance à partir de st_birthtime
et st_birthtimensec
champs de la stat
structure retournée par le stat()
appel système. Alors que par exemple les systèmes BSD (et en extension OS X) fournissent st_birthtime
via stat
, pas Linux. C'est pourquoi stat -c '%w' file
sorties -
(indiquant une heure de création inconnue) sous Linux avant coreutils
8.31 même pour les systèmes de fichiers qui stockent l'heure de création en interne.
Comme le souligne Stéphane Chazelas, certains systèmes de fichiers, tels que ntfs-3g, exposent les temps de création de fichiers via des attributs de fichiers étendus.