9 votos

cómo hacer un cambio de lote (desplazamiento) de la fecha de creación del archivo

OS X Yosemite:

Hace poco hice miles de fotos en un viaje, algunas desde mi iPhone y otras desde mi cámara DSLR.

Ahora, el iPhone obtiene automáticamente la hora y la fecha de las torres de telefonía local, pero la DSLR se quedó con la hora y la fecha de su configuración original.

Así que, básicamente, ahora cuando mezclo todas las fotos y las clasifico por fecha y hora, están todas desordenadas. Me gustaría ver las fotos cronológicamente y para ello necesito desplazar la fecha y la hora de todas las fotos de la DSLR por el mismo desplazamiento (zona horaria).

Así que, básicamente, necesito una línea de comandos o un script que haga algo así:

if filename = DSC_*.*
then creation_date = creation_date + 5 hours

Lo pregunto para OS X específicamente, pero supongo que sería interesante saber cómo hacer esto en Windows o Linux también.

0 votos

Probablemente tendrá que utilizar GetFileInfo , SetFile y el date comandos para lograr lo que pides. Echa un vistazo a Actualizar la fecha de creación del archivo en un número x de días Mac OSX para obtener información de fondo sobre esto.

10voto

user3439894 Puntos 5883

Aquí tienes una versión condensada y modificada de la información del script en el enlace que te di en los comentarios. Puedes guardarlo como un archivo de texto plano, sin extensión, y hacerlo ejecutable según la información del enlace, por ejemplo chmod +x filename . Coloca el script en una carpeta que esté en tu $PATH Por ejemplo: /usr/local/bin/

Este script establece tanto el creado y modificado sello de fecha/hora en cada DSC_*.* archivo +5 horas en el DSC_*.* en el directorio de trabajo.

En una Terminal entonces cd al directorio que contiene el DSC_*.* y luego escribe el nombre que le diste al script y presiona enter.

#!/bin/bash
for f in DSC_*.*; do
    ts="$(GetFileInfo -d "$f")"
    e="$(date -j -f "%m/%d/%Y %H:%M:%S" "$ts" +%s)"
    ((o=60*60*5))
    ((e+=o))
    nd="$(date -r $e "+%m/%d/%Y %H:%M:%S")"
    SetFile -m "$nd" "$f"
    SetFile -d "$nd" "$f"
done

En caso de que el comentario al OP se borre el código anterior se basa en la respuesta a Actualizar la fecha de creación del archivo en un número x de días Mac OSX y modificado a las +5 horas solicitadas. Si sólo quiere cambiar el creado tiempo y luego comentarlo, colocando un # delante, o quitando el SetFile -m "$nd" "$f" línea.

0 votos

Si quiero ir hacia atrás en el tiempo, ¿sólo tengo que cambiar esta línea ((o=60*60*-5)) y todo un día de adelanto sólo sería ((o=60*60*24)) etc.

0 votos

No, ((o=60*60*5)) está dando el desfase en segundos para 5 horas, 60 seg x 60 min x 5 hr = 18000 segundos al o variable. 24 horas son 86400 segundos o ((o=60*60*24)) El ((e+=o)) está haciendo los cálculos para ajustar la diferencia de los segundos desde la época, el $e por la del nuevo sello de fecha/hora del archivo. Así, al cambiar la + iniciar sesión ((e+=o)) a - Por ejemplo ((e-=o)) resta el desplazamiento o segundos desde la época e segundos. Todo esto es necesario para hacer los cálculos para ajustar los tiempos y proporcionar SetFile con un valor para -d y -m formateado de manera que lo entienda.

0 votos

@Daniel, echa un vistazo a Hora de Unix como referencia y mejor comprensión sobre la segundos desde la época referencia. También mira Herramientas de conversión de marcas de tiempo Epoch y Unix y las páginas man para date, GetFileInfo y SetFile.

1voto

Tom Brown Puntos 51

Hay una pequeña gran aplicación llamada shootShifter en la App Store (y tal vez directamente) que está diseñado exactamente para esto. Te permite seleccionar gráficamente las fotos y configurar/modificar tanto el sistema de archivos como las fechas EXIF. A mí me ha funcionado bien.

(No tengo ninguna relación, salvo como usuario de la aplicación).

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X