Y para algo totalmente diferente que sólo utiliza comandos básicos, puedes hacer esto:
# mv OriginalFileName.jpeg TempFileName.jpeg
# touch -t 199912310000 OriginalFileName.jpeg
# cat TempFileName.jpeg > OriginalFileName.jpeg
Los comandos básicos del sistema no quieren que juegues con la fecha de creación, porque, bueno, es la fecha de creación, que en realidad debería considerarse inmutable.
(¿Por qué utilizar touch
cuando aquí hay buenos ejemplos utilizando SetFile
? Bueno, las fechas utilizadas por SetFile
deben estar en la "Época Unix", lo que significa que deben estar entre 1970-01-10 y 2038-01-18. Si eso funciona para usted, bien, pero tengo un montón de fotografías escaneadas y documentos PDF de antes de 1970, y touch
fijará las fechas de creación fuera de la época UNIX, hasta 1900. Además, el formato es más engañoso para SetFile, que no utiliza el formato de fecha/hora de la Norma ISO).
Así que esta solución básicamente copia el archivo, crea un archivo en un punto dado en el tiempo, luego copia el contenido de su archivo original en el archivo vacío creado.
Puede empaquetarlo fácilmente en una función del shell y guardarlo en su archivo .bashrc para facilitar su uso:
function recreate {
mv "$2" /tmp/file_to_recreate
touch -t $1 "$2"
cat /tmp/file_to_recreate > "$2"
}
Ahora sólo tiene que escribir recreate 199912310000 MyPhoto.jpg
y su función "recreará" el archivo con la fecha de creación deseada.
En touch
con el parámetro "-t" toma una fecha-hora en el siguiente formato: AAAAMMDDHHmm. Debe introducir todos los caracteres. Las fechas inexistentes se aceptan silenciosamente sin error, y producen fechas arbitrarias impredecibles.
Lo utilizo para las fotografías, sí, pero también establezco la fecha de creación en la fecha de copyright de los libros en PDF que colecciono.
Tengo muchas diapositivas y fotografías escaneadas que no tienen una fecha de creación EXIF interna, por lo que no he incluido la actualización de los datos EXIF a partir de la fecha de creación del archivo en mi función.
En lugar de eso, hago lo contrario: Utilizo GraphicConverter que tiene el mejor acceso a datos EXIF/IPTC que he visto en cualquier aplicación normal (no Terminal). Puede establecer por lotes la fecha de creación interna EXIF a la fecha de creación del archivo con sólo un par de clics del ratón.
En la dirección contraria, es decir, establecer la fecha de creación del sistema de archivos en la fecha de creación EXIF interna del archivo, será necesario que exiftool . Esto te permitirá ampliar el script anterior obteniendo la fecha que utilizas en touch
con una fecha del archivo de imagen, suministrada por exiftool
.
Para ello, sustituya la cadena de fecha literal en el script anterior ("199912310000") por exiftool -createdate -d "%Y%m%d%H%M%S" -s3
entre comillas.
Aquí tienes una nueva función que he probado un poco. Toma un argumento: el nombre del archivo de imagen a re-actualizar.
function SetCreateFromExif {
mv "$1" /tmp/file_to_re-create
touch -t `exiftool -createdate -d "%Y%m%d%H%M.%S" /tmp/file_to_re-create` -s3 "$1"
cat /tmp/file_to_re-create > "$1"
}
1 votos
Añadir una solución a la propia pregunta es bastante confuso, véase apple.stackexchange.com/help/someone-answers para saber cómo manejar las respuestas útiles.