Comment changer la date / heure de création (st_birthtime) d'un fichier dans Lion? [dupliquer]

10

touch(1)peut uniquement modifier les heures de modification et d' accès , mais n'a pas d'options pour l' heure de création . Cela ne fonctionne pas, du moins pas sur Lion.

Alors, comment puis-je modifier l' heure de création , également appelée heure de naissance dans fstat(2)? Il n'y a pas d'appel correspondant utimes(2)et il ne semble pas y avoir d'outil de ligne de commande pour cela.

Je sais que je peux copier le fichier dans un nouveau fichier, qui obtient alors l'heure actuelle comme heure de naissance (puis supprimer l'original), mais il doit sûrement y avoir une meilleure façon?

Ingmar Hupp
la source
1
touch -t yyyymmddhhmm $filesemble changer la date de création, mais seulement si elle est antérieure à la date de création d'origine.
Lri
Bon point, @Lri - cela a du sens, car cela met à jour mtime et atime et un fichier ne peut pas être consulté ou modifié avant sa création. Mais cela ne me permet pas de définir une nouvelle heure de création.
Ingmar Hupp
Faites-vous référence à la modification via la ligne de commande, ou simplement en général, pas nécessairement avec la CLI?
daviesgeek
Franchement, j'espère que vous ne pouvez pas le changer, car cela détruirait sûrement toute la pointe du terrain?! Je soupçonne également que le problème est que la date de naissance / de création n'est pas une fonctionnalité standard du système de fichiers; hfs l'a ajouté dans ses attributs étendus, je pense - donc à moins que les utilitaires n'aient été mis à jour pour le reconnaître, ils ne pourront pas faire grand chose avec.
Césium

Réponses:

6

touch -t modifie également l'heure de création si l'heure de modification cible est antérieure à l'heure de création d'origine.

SetFile peut définir l'heure de création avant l'heure de modification ou à l'avenir.

-d date    Sets the creation date, where date is a string of the
           form: "mm/dd/[yy]yy [hh:mm:[:ss] [AM | PM]]" Notes:
           Enclose the string in quotation marks if it contains spa-
           ces. The date must be in the Unix epoch, that is, between
           1/1/1970 and 1/18/2038. If the year is provided as a two-
           digit year, it is assumed to be in the 21st century and
           must be from 00 (2000) through 38 (2038).

Cela définirait l'heure de création sur l'heure de modification:

SetFile -d "$(GetFileInfo -m test.txt)" test.txt

SetFile et GetFileInfo font partie du package d'outils de ligne de commande, qui peut être téléchargé à partir des préférences de Xcode ou developer.apple.com/downloads .

Lri
la source
Strictement parlant "birthtime" ( crtime) et ce ctime sont des choses différentes (voir Horaires de création de fichiers dans ZFS
G. Cito
Bien sûr, les temps d'accès et de modification sont souvent les mêmes - mais pour des raisons différentes. Les pages de manuel touchet statcontiennent les détails. Je serais intéressé de savoir comment OpenZFS pour OSX ainsi que les systèmes de fichiers "natifs" OSX gèrent le crtimechamp ou quels statrapports pour les crtimedifférentes versions d'OSX.
G. Cito
-1

Essayer:

cat filename > newfile
mv filename ~/.Trash/
mv newfile filename 

Cela devrait fonctionner.

Sean Freitag
la source
1
Vous devrez toujours supprimer l'original. Ingmar avait déjà couvert cela.
Hippo
Oups, j'aurais dû mieux lire. Mais non, il n'y a pas de meilleur moyen ...
Sean Freitag