Le système de fichiers sous Mac OS X conserve 3 horodatages distincts pour les fichiers, comme suit:
ctime
- heure de changement (heure de dernier changement du propriétaire du fichier, autorisations
atime
- heure d'accès (date du dernier accès au fichier ou au contenu)
mtime
- Heure de modification (date à laquelle le contenu réel a été modifié pour la dernière fois)
Bien que ceux-ci soient définis automatiquement au cours des différentes étapes de la vie d'un fichier au cours d'une interaction normale, il est important de comprendre qu'ils sont également modifiables en une valeur (valide) de votre choix. Vous pouvez écraser la dernière heure modifiée sur une date précédente, si vous en avez vraiment besoin, etc. avec une simple commande de terminal:
StuffeMac:~ stuffe$ touch dan.txt
StuffeMac:~ stuffe$ ls -l dan.txt
-rw-r--r-- 1 stuffe staff 0 3 Jan 22:30 dan.txt
StuffeMac:~ stuffe$ touch -mt 201601022359 dan.txt
StuffeMac:~ stuffe$ ls -l dan.txt
-rw-r--r-- 1 stuffe staff 0 2 Jan 23:59 dan.txt
StuffeMac:~ stuffe$
Donc, tout ce que vous avez à faire est de lire l’heure que vous souhaitez enregistrer, d’apporter vos modifications, puis de revenir à l’heure originale. Tout cela peut être fait dans Automator.
Je ne vous laisserai pas le temps, mais voici un moyen rapide et sale (avec beaucoup de commentaires et de vérifications pour vous assurer de bien comprendre, et ce n’est pas simplement une charge de terminal commandes) pour lire un horodatage, le stocker dans un fichier pour plus tard, puis réappliquer le même horodatage en utilisant la ligne de commande.
Vous devriez pouvoir les enregistrer en tant que scripts courts modifiés pour accepter le nom de fichier fourni par Automator), puis appeler ces scripts en tant qu'actions individuelles de Automator.
La chose la plus délicate est de capturer toute la chaîne de date en une fois, car vous pouvez voir les changements de format et vous perdez du temps pour afficher l’année pour les anciens fichiers (et comme nous venons de passer à 2016, presque tous vos fichiers montrera simplement 2015 au lieu de l'horodatage si vous utilisez ls
...
drwxr-xr-x+ 5 stuffe staff 170 3 May 2015 Public
-rw-r--r-- 1 stuffe staff 0 2 Jan 23:59 dan.txt
... Vous pouvez donc utiliser d'autres commandes, comme à la getfileinfo
place:
StuffeMac-6:~ stuffe$ getfileinfo -m Public
05/03/2015 13:07:33
StuffeMac-6:~ stuffe$ getfileinfo -m dan.txt
01/02/2016 23:59:00
Donc, sans plus tarder, voici un horrible bidouillage que quelqu'un peut améliorer:
Etape 1 , lisez l’horodatage et stockez-le dans une variable, ainsi que dans un fichier afin que nous puissions le récupérer plus tard.
Configurez le fichier et donnez-lui une heure de modification plus ancienne comme s'il s'agissait d'un ancien fichier et répertoriez l'heure de modification pour prouver:
StuffeMac-6:~ stuffe$ touch originalfile.txt
StuffeMac-6:~ stuffe$ touch -mt 201506051200 originalfile.txt
StuffeMac-6:~ stuffe$ ls -l originalfile.txt
-rw-r--r-- 1 stuffe staff 0 5 Jun 2015 originalfile.txt
StuffeMac-6:~ stuffe$ getfileinfo -m originalfile.txt
06/05/2015 12:00:00
Maintenant, nous lisons l’horodatage et passons-le par une commande appelée awk
plusieurs fois pour effacer l’espace de l’horodatage et le remplacer par un signe deux-points, puis en utilisant /
et :
comme délimiteurs, imprimez la date dans le format requis par Touchez la commande plus tard ( c'est un peu méchant, mais essentiellement le premier passage sans un délimiteur fourni utilise un espace par défaut, que je remplace par deux points, de sorte que le prochain passage qui délimite spécifiquement :
fonctionne correctement - je ne pouvais pas l'obtenir d'utiliser un espace et :
et /
en un seul passage ... - mais la lisibilité était plus importante que l' efficacité ). Écho de la variable pour prouver que vous l'avez créée correctement, puis videz-la dans un fichier afin de l'avoir plus tard, lisez le fichier pour le prouver:
StuffeMac-6:~ stuffe$ origtimestampvariable=`getfileinfo -m originalfile.txt | awk '{print $1":"$2}'|awk -F[/:] '{print $3$2$1$4$5}'`
StuffeMac-6:~ stuffe$ echo $origtimestampvariable
201505061200
StuffeMac-6:~ stuffe$ echo $origtimestampvariable > origtimestampvariable.txt
StuffeMac-6:~ stuffe$ more origtimestampvariable.txt
201505061200
Étape 2 Maintenant, modifiez le fichier.
Ici, je viens d’ajouter du texte, mais votre Automator ferait ce travail ici, puis imprimerait les temps modifiés modifiés pour prouver que le changement avait eu lieu:
StuffeMac-6:~ stuffe$ echo "making changes to the file now to change modified time" >> originalfile.txt
StuffeMac-6:~ stuffe$ ls -l originalfile.txt
-rw-r--r-- 1 stuffe staff 55 3 Jan 23:17 originalfile.txt
StuffeMac-6:~ stuffe$ getfileinfo -m originalfile.txt
01/03/2016 23:17:05
Étape 3 Remettez l'ancien horodatage
Maintenant, réinitialisez l'horodatage modifié, en utilisant le fichier tactile comme indiqué en haut de cette réponse, mais en automatisant le bit où nous incluons la date pour inclure le contenu du fichier que nous connaissons maintenant, inclut l'horodatage dont nous avons besoin dans le format correct:
StuffeMac-6:~ stuffe$ touch -mt `cat origtimestampvariable.txt` originalfile.txt
Quelques vérifications supplémentaires pour prouver que l'horodatage d'origine est en place:
StuffeMac-6:~ stuffe$ ls -l originalfile.txt
-rw-r--r-- 1 stuffe staff 55 6 May 2015 originalfile.txt
StuffeMac-6:~ stuffe$ getfileinfo -m originalfile.txt
05/06/2015 12:00:00