Modification de la date d'un fichier

Le
lionmarron
Bonjour,

Existe-t-il une instruction qui permettrait de modifier la date de
création d'un fichier ?

Ce n'est pas précisément le sujet mais à tout hasard j'explique pour
quoi c'est faire : j'ai enregistré des mails dans un dossiers et pour
des raisons que je ne tiens pas à connaître (soyons modestes) cela
marche mais pas d'une façon très habituelle. Les noms de fichiers sont
plutôt bizarre (franchement long), et les dates de création sont
devenues la date du jour de la copie (ce qui ne m'arrange pas pour les
opérations de tri par exemple).

--
lionmarron
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses Page 1 / 4
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Geo Cherchetout
Le #25390132
Le 07/05/2013 20:36, *lionmarron* a écrit fort à propos :
Bonjour,

Existe-t-il une instruction qui permettrait de modifier la date de
création d'un fichier ?



Bonjour,
Je ne sais pas si tes fichiers ont une date de création, ça peut dépendre du
système de fichiers, mais la commande touch permet notamment de modifier
celle du dernier accès et celle de dernière modification. Man touch.
Francois Lafont
Le #25390162
Bonjour,

Le 07/05/2013 20:36, lionmarron a écrit :

Existe-t-il une instruction qui permettrait de modifier la date de
création d'un fichier ?



Sauf erreur de ma part, sous Linux, la date de création d'un fichier n'existe pas. Tu as la date de dernière modification (le mtime) qui correspondra à la date de création si jamais le fichier n'a jamais été modifié. Tu peux artificiellement modifier le mtime (avec le atime dans la foulée) avec la commande touch :

touch -t '200402291621.40' /tmp/f1

placera le mtime du fichier /temp/f1 au "29/02/2004 à 16:21:40".

Ce n'est pas précisément le sujet mais à tout hasard j'explique pour
quoi c'est faire : j'ai enregistré des mails dans un dossiers et pour
des raisons que je ne tiens pas à connaître (soyons modestes) cela
marche mais pas d'une façon très habituelle. Les noms de fichiers sont
plutôt bizarre (franchement long), et les dates de création sont
devenues la date du jour de la copie (ce qui ne m'arrange pas pour les
opérations de tri par exemple).



Je pense que c'est normal, la copie revient à créer un fichier et donc le mtime correspondra à la date de la copie sauf si on utilise des options qui vont bien. Par exemple avec la commande cp et l'option -a, tu préserveras le mtime (entre autres) entre la source et la destination. Mais encore une fois, la date de création d'un fichier n'est pas stockée sous Linux. Ce que tu peux voir avec « ls -l » (ou via un explorateur de fichiers), c'est le mtime qui peut coïncider avec la date de création... ou pas.

--
François Lafont
Francois Lafont
Le #25390152
Le 07/05/2013 20:53, Francois Lafont a écrit :

Sauf erreur de ma part, sous Linux, la date de création d'un fichier n'existe pas.



Rectification : ça ne doit pas être Linux qui est en cause dans cette histoire mais le système de fichiers utilisé. Avec ext3 et ext4, je suis presque sûr que la date de création d'un fichier n'existe pas.

Peut-être qu'il existe des systèmes de fichiers, pris en charge par Linux, et qui stockent la date de création d'un fichier. Si ça existe, je serais curieux d'avoir des exemples.


--
François Lafont
Benoit Izac
Le #25390312
Bonjour,

le 07/05/2013 à 20:58, Francois Lafont a écrit dans le message

Sauf erreur de ma part, sous Linux, la date de création d'un fichier


n'existe pas.

Rectification : ça ne doit pas être Linux qui est en cause dans cette
histoire mais le système de fichiers utilisé. Avec ext3 et ext4, je
suis presque sûr que la date de création d'un fichier n'existe pas.



C'est bien Linux/UNIX qui est en cause, regarde la structure « stat »
dans stat(2) ou

--
Benoit Izac
lionmarron
Le #25390452
Le 07/05/2013 20:53, Francois Lafont a écrit :
Bonjour,

Le 07/05/2013 20:36, lionmarron a écrit :

Existe-t-il une instruction qui permettrait de modifier la date de
création d'un fichier ?



Sauf erreur de ma part, sous Linux, la date de création d'un fichier n'existe pas. Tu as la date de dernière modification



En fait c'est ce qu'il me semblait et, quoique je n'en étais pas sûr,
c'était ce que je voulais dire.

(le mtime) qui correspondra à la date de création si jamais le fichier n'a jamais été modifié. Tu peux artificiellement modifier le mtime (avec le atime dans la foulée) avec la commande touch :

touch -t '200402291621.40' /tmp/f1

placera le mtime du fichier /temp/f1 au "29/02/2004 à 16:21:40".



touch est bien la commande que je recherchais, donc merci pour la réponse.

Maintenant je vais essayer de faire quelque chose pour automatiser la
tache de façon à traiter tous les fichiers d'un répertoire.

Je sais pas si ce sera possible avec un fichier bash car les bonnes
dates se trouvent dans les noms de fichiers, mais je pense que je
pourrais faire script Python qui extrait les bonnes infos avant de les
mettre au bon format, et de les envoyer ligne par ligne vers un
fichiers. Jusque là pas de problème (encore que je n'ai plus utilisé
Python depuis longtemps).

Ensuite il faudrait utiliser touch et je sais pas si c'est possible
depuis un scrip Python, mais je pourrais peut-être le faire depuis un
script bash. (Et je suis pas sûr qu'un script bash puisse traiter un
fichier ligne par ligne mais ce sera sans doute une occasion d'apprendre
quelque chose.)

--
lionmarron
Nicolas George
Le #25390522
Francois Lafont , dans le message
Rectification : ça ne doit pas être Linux qui est en cause dans cette
histoire mais le système de fichiers utilisé. Avec ext3 et ext4, je suis
presque sûr que la date de création d'un fichier n'existe pas.



Les deux sont vrais. L'API Unix ne définit pas de date de création, en
particulier ne propose aucun moyen de la consulter et/ou de la modifier. Du
coup, évidemment, les filesystems prévus pour Unix ne définissent pas de
champ pour la stocker.
Benoit Izac
Le #25390512
Bonjour,

le 07/05/2013 à 23:38, lionmarron a écrit dans le message

Existe-t-il une instruction qui permettrait de modifier la date de
création d'un fichier ?



Sauf erreur de ma part, sous Linux, la date de création d'un fichier
n'existe pas. Tu as la date de dernière modification



En fait c'est ce qu'il me semblait et, quoique je n'en étais pas sûr,
c'était ce que je voulais dire.

(le mtime) qui correspondra à la date de création si jamais le
fichier n'a jamais été modifié. Tu peux artificiellement modifier le
mtime (avec le atime dans la foulée) avec la commande touch :

touch -t '200402291621.40' /tmp/f1

placera le mtime du fichier /temp/f1 au "29/02/2004 à 16:21:40".



touch est bien la commande que je recherchais, donc merci pour la réponse.

Maintenant je vais essayer de faire quelque chose pour automatiser la
tache de façon à traiter tous les fichiers d'un répertoire.

Je sais pas si ce sera possible avec un fichier bash car les bonnes
dates se trouvent dans les noms de fichiers, mais je pense que je
pourrais faire script Python qui extrait les bonnes infos avant de les
mettre au bon format, et de les envoyer ligne par ligne vers un
fichiers. Jusque là pas de problème (encore que je n'ai plus utilisé
Python depuis longtemps).

Ensuite il faudrait utiliser touch et je sais pas si c'est possible
depuis un scrip Python, mais je pourrais peut-être le faire depuis un
script bash. (Et je suis pas sûr qu'un script bash puisse traiter un
fichier ligne par ligne mais ce sera sans doute une occasion
d'apprendre quelque chose.)



Si tu crées un fichier "flist" qui contient la liste des fichiers sous
cette forme :

Il te suffit ensuite de faire (il faut être dans le bon répertoire) :
#!/bin/sh
IFS=/
while read -r FNAME FTIME; do
touch -c -t "$FTIME" "$FNAME"
done <flist

Mais si tu ne nous montres pas à quoi ressemblent tes fichiers,
difficile de t'aider plus...

--
Benoit Izac
Benoit Izac
Le #25390552
Bonjour,

le 08/05/2013 à 00:01, Nicolas George a écrit dans le message

Rectification : ça ne doit pas être Linux qui est en cause dans cette
histoire mais le système de fichiers utilisé. Avec ext3 et ext4, je suis
presque sûr que la date de création d'un fichier n'existe pas.



Les deux sont vrais. L'API Unix ne définit pas de date de création, en
particulier ne propose aucun moyen de la consulter et/ou de la modifier. Du
coup, évidemment, les filesystems prévus pour Unix ne définissent pas de
champ pour la stocker.



Ton assertion semble fausse si l'on considère ext4 comme un système de
fichier prévu pour Unix (champ crtime).

--
Benoit Izac
Francois Lafont
Le #25390582
Le 08/05/2013 00:01, Nicolas George a écrit :
Francois Lafont , dans le message
Rectification : ça ne doit pas être Linux qui est en cause dans cette
histoire mais le système de fichiers utilisé. Avec ext3 et ext4, je suis
presque sûr que la date de création d'un fichier n'existe pas.



Les deux sont vrais. L'API Unix ne définit pas de date de création, en
particulier ne propose aucun moyen de la consulter et/ou de la modifier. Du
coup, évidemment, les filesystems prévus pour Unix ne définissent pas de
champ pour la stocker.



Merci à toi Nicolas, ainsi qu'à Benoit, pour ces précisions. J'étais un peu dans le flou sur ce point.


--
François Lafont
Francois Lafont
Le #25390612
Le 07/05/2013 23:38, lionmarron a écrit :

touch est bien la commande que je recherchais, donc merci pour la réponse.

Maintenant je vais essayer de faire quelque chose pour automatiser la
tache de façon à traiter tous les fichiers d'un répertoire.

Je sais pas si ce sera possible avec un fichier bash car les bonnes
dates se trouvent dans les noms de fichiers [...]



Évidemment, comme l'indique Benoît plus bas, c'est difficile d'en dire plus sans voir la tête de tes fichiers mais il y a de fortes chances pour que ce que tu veuilles faire soit parfaitement faisable (et peut-être aussi assez court à écrire) en shell avec des petits grep ou sed bien sentis.

--
François Lafont
Publicité
Poster une réponse
Anonyme