Ich versuche, meine 46k Bilder von Mac Fotos in ein vernünftiges Datum & zeitbasierte Ordnerstruktur und Dateinamen in einem anderen Programm zu verwenden oder einfach nur auf die Dateien durch Finder. Dank Stackoverflow und der Hilfe Ihres Typen, die ich geschafft habe, indem ich den Master-Ordner aus der Bibliothek kopiert habe und dann das Skript mit einem mv-Befehl in diesem Ordner ausgeführt habe, bin ich irgendwie herausgefordert und würde gerne eine richtige Lösung finden braucht Hilfe:Loop Trog Dateien in Fotobibliothek findet keine Datei
ich laufe in einen Fehler mit dem Code keine Dateien in der Bibliothek zu finden:
- den Raum und der Punkt ist nicht das Problem, es getestet mit „/ Users/Jan/Desktop/Fotos xy "
- mdfind arbeitet für die Fotos Bibliothek im Terminal
- mdfind findet 170k Dateien beim Ausführen auf/Users/Jan/P Allerdings würde das nicht nur die Originalbilder aus der Bibliothek kopieren.
Vielen Dank im Voraus!
#!/bin/bash
#ensure no errors with spaces in filenames
SAVEIFS=$IFS
IFS=$(echo -en "\n\b")
#define variables to count files and progress
x=0
y=0
#count files in Master (Original Pictures) directory
for file in `mdfind file -onlyin "/Users/Jan/Pictures/Photos Library.photoslibrary/Masters"`
do
x=$((x+1))
done
echo "$x files found"
#loop for all files in Master (Original Pictures) directory
for file in `mdfind file -onlyin "/Users/Jan/Pictures/Photos Library.photoslibrary/Masters"`
do
#get date and timestamp of creation date and define Year, Month, Day, Hour, Minute & Second as variable for the filename
D=$(mdls "$file" | grep ContentCreationDate | awk '{print $3, $4}')
YYYY=$(echo $D| cut -c 1-4)
MM=$(echo $D| cut -c 6-7)
DD=$(echo $D| cut -c 9-10)
H=$(echo $D| cut -c 12-13)
M=$(echo $D| cut -c 15-16)
S=$(echo $D| cut -c 18-19)
#add a variable in case multiple files with same timestamp exist
i=1
#define path and create new folders if required: "One per month in every year"
newdir=$(echo /Users/Jan/Desktop/Photos/Sorted/$YYYY/$MM/)
mkdir -p $newdir
#get file extension
ext=$(echo "$file"|awk -F . '{print $NF}')
#define path and name of new file
newfile=$(echo $newdir$YYYY-$MM-$DD_$H-$M-$S.$ext)
#add a loop to add variable i and increase i in case a file with the same timestamp already exists
while test -f "$newfile"
do newfile=$(echo $newdir$YYYY-$MM-$DD_$H-$M-$S_$i.$ext)
i=$((i+1))
done
#copy file into new directory with new timestamp name
cp -p "$file" "$newfile"
y=$((y+1))
echo "$y out of $x files completed"
done
exit
Gibt es eine Fehlermeldung? Haben Sie versucht, das Skript im Debug-Modus ('-x') auszuführen? – Jdamian
Wissen Sie, dass Sie '$ (echo ···)' 'nicht benutzen müssen?' 'Newfile =" $ newdir $ YYYY- $ MM- $ DD_ $ H- $ M- $ S. $ ext "' – Jdamian