El sistema de archivos en Mac OS X conserva 3 marcas de tiempo separadas para los archivos, de la siguiente manera:
ctime
: hora de cambio (hora de la última modificación del propietario del archivo, permisos
atime
: tiempo de acceso (cuando se accedió por última vez al archivo o al contenido)
mtime
- Tiempo de modificación (cuando se modificaron por última vez los contenidos reales)
Si bien estos se configuran automáticamente durante las distintas etapas de la vida de un archivo a través de la interacción normal, es importante comprender que también pueden cambiarse a cualquier valor (válido) que desee en cualquier momento. Puede sobrescribir la última hora modificada a una fecha anterior, si realmente tiene que hacerlo, etc., con un simple comando 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$
Por lo tanto, todo lo que debe hacer es leer el tiempo existente que desea almacenar, realizar los cambios y luego restablecer de nuevo el original. Todo esto se puede hacer dentro de Automator.
Te dejaré que juegues con Automator a continuación, ya que no tengo tiempo, pero aquí hay una manera rápida y sucia (con muchos comentarios y comprobaciones para asegurarte de que lo entiendes y es no solo una carga de comandos de terminal) para leer una marca de tiempo, almacenarlo en un archivo para más tarde y luego volver a aplicar la misma marca de tiempo usando la línea de comandos.
Debería poder guardarlos como scripts cortos modificados para aceptar el nombre de archivo proporcionado por Automator), y luego llamar a esos scripts como acciones individuales de Automator
Lo complicado está en capturar toda la cadena de fecha de una sola vez, ya que puedes ver los cambios de formato y pierdes el tiempo para mostrar el año de los archivos antiguos (y como acabamos de llegar al 2016, casi todos sus archivos simplemente mostrarán 2015 en lugar de la marca de tiempo si usa 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
... Entonces puedes usar otros comandos, como getfileinfo
en su lugar:
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
Sin más preámbulos, aquí hay un hack horrible que alguien puede mejorar:
Paso 1 , lea la marca de hora y guárdela en una variable, y también en un archivo para poder recuperarla más adelante
Configura el archivo y dale una hora modificada anterior como si fuera un archivo antiguo, y enumera la hora modificada para probar:
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
Ahora leemos la marca de tiempo y la pasamos a través de un comando llamado awk
un par de veces para eliminar el espacio en la marca de tiempo y reemplazarlo con dos puntos, luego usando /
y :
como delimitadores, imprima la fecha en el formato requerido por el comando táctil más adelante ( esto es un poco desagradable, pero esencialmente la primera pasada sin un delimitador provisto usa un espacio por defecto, que reemplacé con dos puntos, para que la la próxima pasada que delimita específicamente en :
funciona correctamente; no pude usar un espacio y :
y /
en una pasada ... - pero la legibilidad era más importante que eficiencia ). Haga eco de la variable para demostrar que la ha creado correctamente, luego voltee en un archivo para que la tenga más tarde, lea el archivo para demostrarlo:
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
Paso 2 Ahora realice cambios en el archivo
Aquí solo agregué un texto, pero su Automator haría sus cosas aquí, luego imprimiría los tiempos modificados modificados para demostrar que había cambiado:
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
Paso 3 Vuelva a colocar la marca de tiempo anterior
Ahora reinicie la marca de tiempo modificada, usando el archivo táctil como se muestra en la parte superior de esta respuesta, pero automatizando el bit donde incluimos la fecha para incluir el contenido del archivo que ahora sabemos incluye la marca de hora que necesitamos en la dirección correcta. formato:
StuffeMac-6:~ stuffe$ touch -mt 'cat origtimestampvariable.txt' originalfile.txt
Algunas verificaciones más para probar que la marca de tiempo original está en su lugar:
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