Sous Mac OS X, il semble y avoir quatre horodatages différents associés à un fichier. Ces horodatages ne sont pas toujours mis à jour indépendamment les uns des autres, mais on peut avoir un contrôle individuel avec un peu de soins et à l' utilisation de touch
, SetFile
et chown
(ou chmod
). Pour voir cela, expérimentons et créons un nouveau fichier à partir de l'invite de commande #
:
# touch a.txt
# stat a.txt
16777218 5969798 -rw-r--r-- 1 username staff 0 0 "May 19 00:11:14 2015" "May 19 00:11:14 2015" "May 19 00:11:14 2015" "May 19 00:11:14 2015" 4096 0 0 a.txt
La première date indiquée correspond à l'heure du dernier accès ( atime
), la seconde à la dernière modification ( mtime
), la troisième au dernier changement de statut ( ctime
), la quatrième à l'heure de la création du fichier (naissance, Btime
), voir man lstat
.
Pour modifier l'heure d'accès ( atime
) à une heure spécifiée, utilisez:
# touch -a -t201412312359.59 a.txt
# stat a.txt
16777218 5969798 -rw-r--r-- 1 username staff 0 0 "Dec 31 23:59:59 2014" "May 19 00:11:14 2015" "May 19 00:11:46 2015" "May 19 00:11:14 2015" 4096 0 0 a.txt
Pour modifier l’heure de modification ( mtime
) et l’ heure de création du fichier ( Btime
) sur une heure spécifiée, utilisez:
# touch -m -t201312312359.59 a.txt
# stat a.txt
16777218 5969798 -rw-r--r-- 1 username staff 0 0 "Dec 31 23:59:59 2014" "Dec 31 23:59:59 2013" "May 19 00:12:19 2015" "Dec 31 23:59:59 2013" 4096 0 0 a.txt
Apparemment, cela met également automatiquement à jour l'heure du dernier changement d'état ( ctime
) avec l'heure système actuelle!
Pour modifier uniquement le moment de création / naissance ( Btime
) à un moment donné, utilisez (comme proposé par d'autres ci-dessus):
# SetFile -d "12/31/1999 23:59:59" a.txt
# stat a.txt
16777218 5969798 -rw-r--r-- 1 username staff 0 0 "Dec 31 23:59:59 2014" "Dec 31 23:59:59 2013" "May 19 00:12:19 2015" "Dec 31 23:59:59 1999" 4096 0 0 a.txt
Pour modifier uniquement l'heure du dernier changement d'état ( ctime
) en fonction de l'heure système actuelle, utilisez par exemple:
# chown username a.txt
# stat a.txt
16777218 5969798 -rw-r--r-- 1 username staff 0 0 "Dec 31 23:59:59 2014" "Dec 31 23:59:59 2013" "May 19 00:13:45 2015" "Dec 31 23:59:59 1999" 4096 0 0 a.txt
où username
est le propriétaire du fichier (tel que rapporté par stat
ou ls -l
). Cela ne change pas la propriété du fichier, mais accède à l'inode du fichier et l'enregistre comme heure de la dernière modification de statut. Malheureusement, il n'est pas possible de spécifier explicitement l'heure ici autrement qu'en changeant l'heure de l'ordinateur ...
En résumé, pour pouvoir changer les quatre horodatages indépendamment, on peut utiliser (dans cet ordre pour les trois derniers):
touch -a -tCCYYMMDDHH.SS <file>
touch -m -tCCYYMMDDHH.SS <file>
SetFile -d "MM/DD/CCYY HH:MM:SS" <file>
- [régler la date du système]
chown username <file>
[revenir à la date système normale]
(Bien entendu, la réinitialisation de la date système peut ne pas être une opération sans risque, vous en avez été averti.)