El sistema de archivos en Mac OS X conserva 3 marcas de tiempo separadas para los archivos, como sigue:
ctime
- hora de modificación (última hora de modificación del propietario del archivo, permisos
atime
- Hora de acceso (cuándo se accedió por última vez al archivo o al contenido)
mtime
- Hora de modificación (cuándo se modificó el contenido por última vez)
Aunque se establecen automáticamente durante las distintas etapas de la vida de un archivo a través de la interacción normal, es importante entender que también se pueden cambiar a cualquier valor (válido) que desee en cualquier momento. Puedes sobrescribir la última hora de modificación a una fecha anterior, si realmente tienes 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$
Así que todo lo que necesita hacer, es leer la hora existente que desea almacenar, hacer sus cambios, y luego restablecer el original. Todo esto se puede hacer dentro de Automator.
Te dejo que juegues a meter lo de abajo en Automator, ya que no tengo tiempo, pero aquí tienes una forma rápida y sucia (con muchos comentarios, y comprobaciones para asegurarte de que lo entiendes y no es sólo una carga de comandos de terminal) de leer una marca de tiempo, almacenarla 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 breves scripts modificados para aceptar el nombre del archivo tal y como lo proporciona Automator), y luego llamar a esos scripts como acciones individuales de Automator
Lo complicado está en capturar toda la cadena de fechas de una sola vez, como puedes ver el formato cambia, y pierdes la hora para poder mostrar el año de los archivos antiguos (y como acabamos de entrar en 2016, casi todos tus archivos simplemente mostrarán 2015 en lugar de la marca de tiempo si usas 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
...Así que 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
Así que sin más preámbulos, aquí está un horrible hack que alguien puede mejorar:
Paso 1 leer la marca de tiempo y almacenarla en una variable, y también en un archivo para que podamos recuperarla más tarde
Configurar el archivo y darle un tiempo de modificación anterior como si fuera un archivo antiguo, y la lista de la hora de modificación 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 sustituirlo por dos puntos, y luego usar /
y :
como delimitadores, imprime la fecha en el formato que requiere el comando touch más adelante ( esto es un poco desagradable, pero esencialmente la primera pasada sin un delimitador proporcionado utiliza un espacio por defecto, que reemplazo con dos puntos, de modo que la siguiente pasada que delimita específicamente en :
funciona correctamente - no pude conseguir que usara un espacio y :
y /
en una sola pasada... - pero la legibilidad era más importante que la eficiencia ) . Haz un eco de la variable para demostrar que la has creado correctamente, luego vuélcala en un archivo para que la tengas después, lee el archivo para comprobarlo:
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 haz cambios en el archivo
Aquí sólo añado algo de texto, pero su Automator haría sus cosas aquí, y luego imprimiría las veces modificadas para demostrar que ha 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 Vuelve a poner la antigua marca de tiempo
Ahora restablece la marca de tiempo modificada, utilizando el archivo táctil como se muestra en la parte superior de esta respuesta, pero automatizando la parte donde incluimos la fecha para incluir el contenido del archivo que ahora sabemos que incluye la marca de tiempo que necesitamos en el formato correcto:
StuffeMac-6:~ stuffe$ touch -mt `cat origtimestampvariable.txt` originalfile.txt
Algunas comprobaciones más para demostrar que la marca de tiempo original está en su sitio:
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
0 votos
Si modificas un archivo, se supone que su fecha/hora cambiará y es un comportamiento bastante normal.
0 votos
Como otros han señalado, la fecha de modificación cambiará. Yo uso un programa de línea de comandos (gratuito) para copiar las fechas Exif desde el
jpeg
al campo de la fecha. También tengo un Automator script para hacer esto que consiste en el simplebash
scriptjhead -ft "$*"
. Si desea esta búsqueda parajhead
.0 votos
Hola Milliways, esta solución es aún más sencilla que el script que tenía en mente. He buscado por ahí y he descubierto que puedo comprobar la información EXIF usando el software de Fotos o usando Obtener Información (Cmd+I) en Más, aunque la fecha no aparece por separado ahí. He encontrado Programa jhead de Matthias Wandel .
0 votos
@SeanJ, he editado el código para combinar los comandos de SetFile para llamarlo sólo una vez usando tanto el
-m
y-d
banderas al mismo tiempo. (Debería haberlo hecho así desde el principio) Así que es posible que quiera actualizar el servicio de Automator que subió. También si dejas el espacio en blanco y la sangría que tengo en el código te lo agradecería ya que, en mi opinión, hace que sea más fácil de leer y entender. El espacio en blanco no ralentiza la ejecución.