Ich weiß, dass dies alt und beantwortet ist, aber ich denke, dass das Skript, das ich nach einem Tag des Googelns und Versuchens zusammengestellt habe, es wert ist, geteilt zu werden.
Ändern Sie Ihre Optionen, und dieses Skript verschiebt oder kopiert Ihre Originale in einen Ordner mit dem Namen "JJJJ-MM-TT Ihr Albumname". So behalten Sie den Überblick über Ihre ursprünglichen Albumtitel und alle Fotos werden auch nach Tag sortiert.
Passen Sie es an Ihre Bedürfnisse an. Ich mache dies, um eine gemeinsam genutzte Dateibasis von Originalfotos per Dropbox synchronisieren zu können, und alle freigegebenen Benutzer können ihre eigene Kopie von Photos.app als Basis für Fotos verwenden, auf die verwiesen wird .
Es wird versucht, das Überschreiben von Fotos mit demselben Namen zu vermeiden, indem zunächst überprüft wird, ob bereits eine nicht identische Datei auf demselben Pfad vorhanden ist.
Außerdem wird der Zeitstempel der neu erstellten Ordner auf das Datum der Ereignisse gesetzt, die sie haben. Es ist schön, Ereignisse im Finder oder was auch immer nach Datum zu sortieren, obwohl die Ordnernamen bereits mit dem Datum beginnen (denn wenn Sie sie an eine andere Stelle kopieren, können sich die Zeitstempel trotzdem ändern).
Es ist kompatibel mit einfachen Anführungszeichen in Albumnamen. Es ist möglicherweise mit Anführungszeichen kompatibel, aber ich habe das NICHT getestet.
#! / bin / bash
#### Einige Optionen ####
# dryrun = 1
Trockenlauf = 0
# Wählen Sie, ob Sie duplizieren (langsam, platzraubend) oder verschoben (platzsparend, schnell, wenn Sie sich auf demselben Laufwerk befinden).
# action = cp
Aktion = mv
# Setze deine Wege
# Ursprung:
libr = "Photos Library.photoslibrary"
# Ziel:
destpath = "MyProperlyOrganizedFotos"
# Keine Ahnung, warum Apple ein lustiges Date wählt. Passen Sie sich Ihren Zeitzonenanforderungen an
dateoffset = 978307200
#### Ende der Optionen ####
sqllib = "$ {libr}" / Database / apdb / Library.apdb
s = "sqlite3 $ {sqllib}"
# $ {s} 'wähle fileName, imageDate, imagePath, projectUuid von RKMaster'
$ {s} 'wähle fileName, imageDate, imagePath, projectUuid von RKMaster' | sed 's, ", thisisaquotationmark, g' | while read -r line; do
echo $ line
name = `echo" $ line "| awk 'BEGIN {FS = "|"} {print $ 1}' `
date = `echo" $ line "| awk 'BEGIN {FS = "|"} {print $ 2}' `
path = `echo" $ line "| awk 'BEGIN {FS = "|"} {print $ 3}' `
albumid = `echo" $ line "| awk 'BEGIN {FS = "|"} {print $ 4}' `
albumname = `$ {s}" wähle den Namen aus RKFolder aus, wobei uuid == '$ {albumid}' "| sed -e 's, /,:, g' -e 's ,! ,, g' -e 's, ", thisisaquotationmark, g'`
realdate = `date -r $ (($ {dateoffset} + $ {date})) '+% Y-% m-% d'`
touchdate = `date -r $ (($ {dateoffset} + $ {date})) '+% Y% m% d1200'`
# existiert diese Datei noch? oder haben wir es schon bewegt?
src = `echo $ {libr} / Masters / $ {path} | sed 's / thisisaquotationmark / \\ "/ g'`
wenn [ ! -f "$ {src}"]; dann
fortsetzen
fi
# trim:
newpath = `echo $ realdate $ albumname | sed 's / thisisaquotationmark / \\\\ "/ g'`
wenn [ ! $ dryrun -eq 1]; dann
expandnewpath = `echo $ {newpath}`
mkdir -p "$ {destpath} / $ {newpath}"
touch -t $ {touchdate} "$ {destpath} / $ {newpath}"
fi
target = "$ {destpath} / $ {newpath} / $ {name}"
Index = 0
# Fügen Sie einer Datei einen Ganzzahlindex hinzu, wenn der Name bereits in diesem Pfad vorhanden ist
während [-f "$ {target}"] &&! cmp --silent "$ {target}" "$ {src}"; tun
echo 'Überschreiben vermeiden:' $ index
index = $ (($ index + 1))
target = "$ {destpath} / $ {newpath} / $ {name} $ index"
getan
if [$ dryrun -eq 1]; dann
echo "Würde $ {action} '$ {src}' '$ {target}' ausführen"
sonst
echo "$ {action} '$ {src}' '$ {target}'"
$ {action} "$ {src}" "$ {target}"
fi
getan