So che è vecchio e ha una risposta, ma penso che valga la pena condividere il copione che ho messo insieme dopo una giornata di ricerche su Google e di tentativi.
Modifica le tue opzioni e questo script sposta o copia gli originali in una cartella denominata "aaaa-mm-gg Nome album". Quindi tieni traccia dei titoli dei tuoi album originali e anche tutte le foto vengono ordinate in base al giorno.
Modifica in base alle tue esigenze .. Faccio questo per poter avere una base di file condivisa di foto originali sincronizzate da Dropbox e tutti gli utenti che condividono possono avere la propria copia di Photos.app utilizzarla come base per le foto di riferimento .
Cerca di evitare di sovrascrivere le foto con lo stesso nome, verificando prima se esiste già un file non identico nello stesso percorso.
Inoltre, imposta il timestamp delle cartelle appena create sulla data degli eventi che hanno. Bello ordinare gli eventi per data nel Finder o qualsiasi altra cosa, anche se i nomi delle cartelle iniziano già con la data (perché se li copi altrove, i timestamp potrebbero cambiare comunque).
È compatibile con virgolette singole nei nomi degli album. Potrebbe essere compatibile con le virgolette, ma NON l'ho testato.
#! / bin / bash
#### Alcune opzioni ####
# dryrun = 1
dryrun = 0
# Scegli di duplicare (lento, mangia spazio) o spostare (risparmio di spazio, veloce se sullo stesso disco).
# azione = cp
azione = mv
# imposta i tuoi percorsi
# origine:
libr = "Photos Library.photoslibrary"
# destinazione:
destpath = "MyProperlyOrganizedFotos"
# non ho idea del perché Apple scelga un appuntamento divertente. Adattati alle tue esigenze di fuso orario
dateoffset = 978307200
#### Fine delle opzioni ####
sqllib = "$ {libr}" / Database / apdb / Library.apdb
s = "sqlite3 $ {sqllib}"
# $ {s} 'seleziona fileName, imageDate, imagePath, projectUuid da RKMaster'
$ {s} 'seleziona fileName, imageDate, imagePath, projectUuid da RKMaster' | sed 's, ", thisisquotationmark, g' | while read -r line; do
echo $ riga
nome = `echo" $ riga "| awk 'BEGIN {FS = "|"} {print $ 1}' `
data = `echo" $ riga "| awk 'BEGIN {FS = "|"} {print $ 2}' `
percorso = `echo" $ riga "| awk 'BEGIN {FS = "|"} {print $ 3}' `
albumid = `echo" $ line "| awk 'BEGIN {FS = "|"} {print $ 4}' `
albumname = `$ {s}" seleziona il nome da RKFolder dove uuid == '$ {albumid}' "| sed -e 's, /,:, g' -e 's,! ,, g' -e 's, ", questoèquotazione, g'`
realdate = `date -r $ (($ {dateoffset} + $ {date})) '+% Y-% m-% d'`
touchdate = `date -r $ (($ {dateoffset} + $ {date})) '+% Y% m% d1200' '
# questo file esiste ancora? o l'abbiamo già spostato?
src = `echo $ {libr} / Masters / $ {percorso} | sed 's / thisisaquotationmark / \\ "/ g'`
Se [ ! -f "$ {src}"]; poi
Continua
fi
# trim:
newpath = `echo $ realdate $ albumname | sed 's / thisisaquotationmark / \\\\ "/ g'`
Se [ ! $ dryrun -eq 1]; poi
Expandnewpath = `echo $ {newpath}`
mkdir -p "$ {destpath} / $ {newpath}"
tocca -t $ {touchdate} "$ {destpath} / $ {newpath}"
fi
target = "$ {destpath} / $ {newpath} / $ {name}"
indice = 0
# aggiunge un indice intero a un file se il nome esiste già in questo percorso
while [-f "$ {target}"] &&! cmp --silent "$ {target}" "$ {src}"; fare
echo 'Evitare la sovrascrittura:' $ index
indice = $ (($ indice + 1))
target = "$ {destpath} / $ {newpath} / $ {name} $ index"
fatto
if [$ dryrun -eq 1]; poi
echo "Farebbe $ {action} '$ {src}' '$ {target}'"
altro
echo "$ {action} '$ {src}' '$ {target}'"
$ {action} "$ {src}" "$ {target}"
fi
fatto