Extrem große Menge an Bilder sortiere?

4 Antworten

Vom Beitragsersteller als hilfreich ausgezeichnet

teile die Datenmenge durch 10, dann sortiere diese, dann führst du zusammengehörige Datensätze wieder zusammen, und sortierst ggf. nochmal die einzelnen Kategorien. z.B Für jedes Jahr ein Ordner.


effzeheffzeh  07.03.2022, 15:23

Welches ist die Menge, die Windows noch sortieren kann? Ich möchte nicht unnötig viele Bündel machen, aber auch keine, die Windows Datei Manager nicht gebacken bekommt.

Welches ist denn da eine Menge, die Windows noch sortiert bekommt? Bei mir sind es 65.000 Fotos. Ich möchte nicht unnötig viele Bündel machen, aber auch keine, die der Windows Datei Manager auch nicht mehr gebacken bekommt.

Einfach aufteilen in mehrere Bündel, die du sortierst.
Man muss ja nicht alle Bilder direkt in einer Ordner sortieren sondern kanns ja Etappenweise machen.

unter Windows ist das blöd, ich hab mir dafür ein Linux Shellscript geschrieben welches die Bilder nach Dateitimestamp in Unterordner /YYYY/MM/DD schreibt und doppelte per md5 Checksum aussortiert.


vorhautloser641  10.06.2021, 22:22

Vielleicht kannst du damit was anfangen:

#!/bin/sh
#set -x
DRIVELETTER=n
LOGFILEPATH="/srv/dev-disk-by-label-disk1/share/Bilder/_unsorted"
ARCHIVEBASE="/srv/dev-disk-by-label-disk1/share/Bilder"
SCHROTTY="$ARCHIVEBASE/doppel"
CHECKSUMFILE=$ARCHIVEBASE"/Skripte/checksum_database.txt"
JAHR=`date +%Y`
MONAT=`date +%m`
TAG=`date +%d`
IFS="
"
STARTDIR=`pwd`

movefiles ()
{
cd $LOGFILEPATH
echo "Verarbeite $SEARCHSTRING für Ordner $FILEDIRNAME"
OLDLOGFILELIST=`find . -maxdepth 1 -iname "$SEARCHSTRING" `
for OLDLOGFILE in $OLDLOGFILELIST
do
        cd $LOGFILEPATH
        FILEDATE=`ls --full-time $OLDLOGFILE|awk '{print $6 }'|sed "s/\-/\ /g"`
        FILEYEAR=`echo $FILEDATE|awk '{print $1 }'`
        FILEMONTH=`echo $FILEDATE|awk '{print $2 }'`
        FILEDAY=`echo $FILEDATE|awk '{print $3 }'`
        echo "Filename: "$OLDLOGFILE "Tag: " $FILEDAY "Monat: " $FILEMONTH "Jahr: "$FILEYEAR
        ARCHDIR=$ARCHIVEBASE"/"$FILEDIRNAME"/"$FILEYEAR"/"$FILEYEAR"_"$FILEMONTH"_"$FILEDAY
        if [ ! -d $ARCHDIR ]
        then
                mkdir -p $ARCHDIR
        fi
         CHECKSUM=`openssl md5 < $OLDLOGFILE|awk '{print $2}'`
        FILESIZE=`ls -la $OLDLOGFILE|awk '{print $5}'`
        LISTENTRY=$CHECKSUM" "$FILESIZE" "$OLDLOGFILE
        #CHECKDB=""
        CHECKDB=`cat $CHECKSUMFILE|grep "$CHECKSUM"|grep "$FILESIZE"`
        #echo $CHECKDB
        if [ -z $CHECKDB ]
        then
            echo $LISTENTRY
            echo $LISTENTRY >> $CHECKSUMFILE
            mv -i $OLDLOGFILE $ARCHDIR
            echo "verschiebe zu  $ARCHDIR"
        else
            mv -f $OLDLOGFILE $SCHROTTY
            echo "schrotty"
        fi      
        
done
cd $LOGFILEPATH
}

#createChecksumList
FILEDIRNAME=Bilder
SEARCHSTRING="*.jpg"
movefiles
cd $STARTDIR


vorhautloser641  10.06.2021, 22:49
@vorhautloser641

falls die Timestamps der Dateien nicht mehr stimmen sollten, kann man das Script noch modifizieren und per exiftool das Aufnahmedatum aus den Metadaten der Bilddateien auslesen und entsprechend verwenden.