Sé que esto es antiguo y está resuelto, pero creo que vale la pena compartir el guión que armé después de un día de buscar en Google y de intentarlo.
Modifique sus opciones, y este script moverá o copiará sus originales a una carpeta llamada 'aaaa-mm-dd Nombre de su álbum'. Por lo tanto, realiza un seguimiento de los títulos de sus álbumes originales y todas las fotos también se ordenan por día.
Modifique para adaptarlo a sus necesidades. Hago esto para poder tener una base de archivos compartidos de fotos originales sincronizadas por Dropbox, y todos los usuarios que comparten pueden tener su propia copia de Photos. La aplicación la usa como base para las fotos de referencia .
Intenta evitar sobrescribir fotos con el mismo nombre, verificando primero si ya existe un archivo no idéntico en la misma ruta.
Además, establece la marca de tiempo de las carpetas recién creadas con la fecha de los eventos que tienen. Es bueno ordenar los eventos por fecha en el buscador o lo que sea, aunque los nombres de las carpetas ya comienzan con la fecha (porque si los copia en otro lugar, las marcas de tiempo pueden cambiar de todos modos).
Es compatible con comillas simples en los nombres de álbumes. Puede ser compatible con las comillas, pero NO lo he probado.
#! / bin / bash
#### Algunas opciones ####
# dryrun = 1
dryrun = 0
# Elija duplicar (lento, comer espacio) o mover (ahorro de espacio, rápido si está en la misma unidad).
# acción = cp
acción = mv
# establece tus caminos
# origen:
libr = "Fotos Library.photoslibrary"
# destino:
destpath = "MyProperlyOrganizedFotos"
# No tengo idea de por qué Apple elige una cita divertida. Ajústese a las necesidades de su zona horaria
dateoffset = 978307200
#### Fin de las opciones ####
sqllib = "$ {libr}" / Base de datos / apdb / Library.apdb
s = "sqlite3 $ {sqllib}"
# $ {s} 'seleccione fileName, imageDate, imagePath, projectUuid from RKMaster'
$ {s} 'seleccione fileName, imageDate, imagePath, projectUuid from RKMaster' | sed 's, ", thisisaquotationmark, g' | while read -r line; do
echo $ línea
nombre = `echo" $ línea "| awk 'EMPEZAR {FS = "|"} {imprimir $ 1}' `
fecha = `echo" $ línea "| awk 'COMIENZO {FS = "|"} {imprimir $ 2}' `
ruta = `echo" $ línea "| awk 'EMPEZAR {FS = "|"} {imprimir $ 3}' `
albumid = `echo" $ line "| awk 'BEGIN {FS = "|"} {imprimir $ 4}' `
albumname = `$ {s}" seleccione el nombre de RKFolder donde uuid == '$ {albumid}' "| sed -e 's, /,:, g' -e 's,! ,, g' -e 's, ", esto es una comilla, g'`
realdate = `date -r $ (($ {dateoffset} + $ {date})) '+% Y-% m-% d'`
touchdate = `fecha -r $ (($ {dateoffset} + $ {date})) '+% Y% m% d1200'`
# ¿Aún existe este archivo? ¿O ya lo movimos?
src = `echo $ {libr} / Masters / $ {ruta} | sed 's / thisisaquotationmark / \\ "/ g'`
Si [ ! -f "$ {src}"]; luego
Seguir
fi
# podar:
newpath = `echo $ realdate $ albumname | sed 's / thisisaquotationmark / \\\\ "/ g'`
Si [ ! $ dryrun -eq 1]; luego
expandidonewpath = `echo $ {newpath}`
mkdir -p "$ {ruta de destino} / $ {ruta nueva}"
touch -t $ {touchdate} "$ {destpath} / $ {newpath}"
fi
target = "$ {destpath} / $ {newpath} / $ {name}"
índice = 0
# agregue un índice entero a un archivo si el nombre ya existe en esta ruta
while [-f "$ {target}"] &&! cmp --silent "$ {target}" "$ {src}"; hacer
echo 'Evitando sobrescribir:' $ index
índice = $ (($ índice + 1))
target = "$ {destpath} / $ {newpath} / $ {name} $ index"
hecho
si [$ dryrun -eq 1]; luego
echo "Haría $ {action} '$ {src}' '$ {target}'"
más
echo "$ {action} '$ {src}' '$ {target}'"
$ {action} "$ {src}" "$ {target}"
fi
hecho