1 votes

Comment modifier l'heure de "dernière modification" (ou "dernière modification") des fichiers sous Linux ?

J'ai essayé touch -t mais sa précision n'est que d'une seconde : lorsque j'utilise la fonction stat je vois qu'il y a 9 chiffres tous à zéro après la décimale ( . ) :

Access: 2013-10-10 15:12:00.000000000 +0200
Modify: 2013-10-10 15:12:00.000000000 +0200
Change: 2015-11-22 18:39:54.369524868 +0100

Comment puis-je changer l'heure de la "dernière modification" et du "dernier changement" des fichiers à la précision de 9 chiffres après la virgule ?

2voto

Patrice Levesque Points 800

Utilisez le -d à la place.

touch -m -d '2015-01-01 01:01:01.123456789' file.ext

1voto

Thomas Dickey Points 8167

En touch vous permet de modifier le modification temps et/ou le accès temps. Vous ne pouvez pas régler le changement l'heure de façon arbitraire : elle est fixée à l'heure à laquelle vous modifiez l'une des deux autres heures.

La raison en est que touch s'appuie sur un appel système qui ne peut faire que les combinaisons mentionnées ci-dessus. Le site code source (dans GNU coreutils) utilise ce chunk :

  ok = (fdutimensat (fd, AT_FDCWD, (fd == STDOUT_FILENO ? NULL : file), t,
                     (no_dereference && fd == -1) ? AT_SYMLINK_NOFOLLOW : 0)
        == 0);

qui à son tour (voir source ) appelle futimens o utimensat . Ces fonctions sont à la fois POSIX qui note

Après avoir terminé, futimens() y utimensat() marque le dernier fichier changement de statut horodatage de la mise à jour.

En changement de statut Le timestamp est ce que vous ne pouvez pas définir arbitrairement.

Les deux fonctions POSIX acceptent timespec qui fournissent une résolution en nanosecondes. Le système de fichiers de votre ordinateur peut ou non supporter cela (bien que le résultat de stat indique qu'il peut le faire).

Le style POSIX par défaut -t est comme indiqué limitée à une résolution d'une seconde. Cependant (toujours POSIX ) le -d L'option permet de fractions d'une seconde :

YYYY-MM-DDThh:mm:SS[.frac][tz]

GNU coreutils prend en charge cette -d option, permettant une résolution de l'ordre de la nanoseconde. Le site documentation pour touch donne comme exemple

--date="2004-02-27 14:19:13.489392193 +0530"

(où --date est un nom long équivalent à -d ).

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X