Comment obtenir la date de création d’un fichier sous Linux ?
I. Présentation
Dans ce tutoriel, nous allons voir comment récupérer la date de création d'un fichier sous Linux, notamment avec la commande stat. Même si cette information est basique, elle reste précieuse et c'est bien de savoir comment la récupérer. Et si jamais vous oubliez, cet article sera là pour vous rappeler comment faire. 😉
Pour ma part, j'utilise Debian 11 et un disque avec le système de fichiers EXT4 pour cette démo.
II. Récupérer la date de création d'un fichier avec stat
Sous Linux, la commande "stat" fait partie du package "Coreutils" et elle permet d'obtenir des informations sur un dossier ou un fichier. Parmi les informations que l'on peut récupérer, il y a le chemin complet, la taille, les droits, mais aussi plusieurs dates (date du dernier accès, date de la dernière modification et la date de création).
Commençons par créer un fichier vide avec la commande touch :
touch /home/flo/itconnect.txt
Ensuite, on va simplement exécuter la commande "stat" en précisant le chemin vers notre fichier :
stat /home/flo/itconnect.txt
Voici ce que l'on obtient :
On peut voir que la dernière ligne s'intitule "Créé" et elle contient la date et l'heure de création du fichier, de façon très précise ! Sur une version anglaise, la ligne "Créé" sera remplacée par "Birth". Vu qu'il y a aussi la date de dernière modification, vous pouvez savoir si un fichier a été modifié depuis sa création.
Maintenant, si vous souhaitez obtenir uniquement la date de création du fichier sans toutes les autres informations, il va falloir affiner la commande stat.
En regardant l'aide de cette commande (stat --help), on peut voir qu'elle dispose d'un paramètre nommé "-c" et qui permet d'ajuster le format de sortie, ce qui est s'annonce intéressant par rapport à ce que l'on cherche à faire. Toujours dans l'aide, on peut également lire ceci :
%w date de création du fichier, lisible ; - si inconnue
Il ne reste plus qu'à utiliser "%w" pour notre format de sortie, ce qui donne la commande suivante :
stat -c '%w' /home/flo/itconnect.txt
Cette fois-ci, j'obtiens uniquement l'information souhaitée :
2021-11-04 08:59:36.802289548 +0100
Voici un exemple en image :
Si vous souhaitez exploiter la commande stat pour obtenir d'autres informations, je vous invite à explorer l'aide (qui au passage est très bien décrite) et à ajuster le format de sortie.
Enfin, si vous connaissez une autre manière d'obtenir la date de création d'un fichier sous Linux, n'hésitez pas à poster un commentaire pour partager l'information avec la communauté.
Bonjour,
Quel environnement et quel FS as-tu utilisés ? Sous Debian 10, impossible d’avoir la date de création , que ce soit sous ext3, 4 Reiser ou XFS.
Bonjour Eric,
C’est vrai que j’aurais dû le préciser… Je suis sur Debian 11 avec un système de fichiers en EXT4. Sur Debian 10, la commande est reconnue ou pas du tout ? Car il te manque peut être un paquet.
non, la date de création n’est pas récupérée. C’est un sujet dont je cherche la solution depuis un moment. Sur debian 11, ça fonctionne. Après tests, cela vient de la version du package coreutils. La version 8.32 fournie avec Deb 11 est nécessaire pour obtenir la date de création.
Bonjour,
La date de création n’est pas exposée par tous les systèmes de fichiers. Sous EXT3 elle n’était pas disponible, par exemple, et elle est apparue avec EXT4. Le problème c’est que les commandes classiques n’ont pas été mises à jour immédiatement et ne restituaient pas cette valeur pourtant désormais disponibles (ex : « ls ») forçant à passer par des commandes exotériques parfois : debugfs -R « stat » /dev/sdX | grep crtime.
Ref : https://www.baeldung.com/linux/get-file-creation-date