Fotos per Cron-Job sortieren

Debian macht sich hervorragend als Web- und Mailserver. Schau auch in den " Tipps und Tricks"-Bereich.
Antworten
jochen35
Beiträge: 63
Registriert: 03.10.2009 10:03:48

Fotos per Cron-Job sortieren

Beitrag von jochen35 » 23.07.2016 06:39:27

Hallo,

meine Webcam lädt Fotos per FTP mit folgenden Dateinamen in ein Verzeichnis auf meinem Web-Server.

IMAGE_YYYYMMDD-HHmmss.jpg

Ich würde diese Dateien nun gerne per Cron-Job jeweils in der Nacht in eine Verzeichnisstruktur nach folgendem Schema verschieben lassen.

-YYYY
--MM
---DD

Die Verzeichnisstruktur ist natürlich noch nicht vorhanden und soll daher auf Basis der Dateinamen erstellt werden.

Wie stelle ich das am besten an?

Gruß
Jochen

DeletedUserReAsG

Re: Fotos per Cron-Job sortieren

Beitrag von DeletedUserReAsG » 23.07.2016 08:16:35

Möchtest du dich selbst einarbeiten, oder soll jemand ein Script für dich schreiben? Wenn Ersteres: wo genau hängst du denn gerade? Wenn Letzteres … irgendjemand wird sich schon finden.

rendegast
Beiträge: 15041
Registriert: 27.02.2006 16:50:33
Lizenz eigener Beiträge: MIT Lizenz

Re: Fotos per Cron-Job sortieren

Beitrag von rendegast » 23.07.2016 10:57:13

IMAGE_YYYYMMDD-HHmmss.jpg

Code: Alles auswählen

TGT="/path"
#ls -1 | egrep "^IMAGE_[0-9]{6}-[0-9]{6}.jpg$" | while read IMG; do
ls -1 | egrep "^IMAGE_[0-9]{8}-[0-9]{6}.jpg$" | while read IMG; do
    DTE=${IMG#IMAGE_}
    DTE=${DTE%-*}
    DIR="$TGT/$(echo $DTE | sed 's@\(....\)\(..\)\(..\)@\1/\2/\3@')"
    mkdir -p "$DIR" && mv $IMG "$DIR"
done
Das grep ist ein Beschränkung auf das richtige Format.

Irgendwas ohne sed? -> Performace
Aber das sed dürfte schneller sein als das Kopieren/Verschieben,
daher in diesem speziellen Fall wohl nicht relevant.
Zuletzt geändert von rendegast am 23.07.2016 20:55:36, insgesamt 2-mal geändert.
mfg rendegast
-----------------------
Viel Eifer, viel Irrtum; weniger Eifer, weniger Irrtum; kein Eifer, kein Irrtum.
(Lin Yutang "Moment in Peking")

inne
Beiträge: 3281
Registriert: 29.06.2013 17:32:10
Lizenz eigener Beiträge: GNU General Public License
Kontaktdaten:

Re: Fotos per Cron-Job sortieren

Beitrag von inne » 23.07.2016 11:01:29

Schau dir mal exiftool an. Basiert dann aber auf den EXIF-Daten nicht auf Dateinamen.

https://manpages.debian.org/cgi-bin/man ... y=exiftool:
Renaming Examples
...
exiftool '-Directory<DateTimeOriginal' -d %Y/%m/%d dir
Move all files in "dir" into a directory hierarchy based on year, month and day of "DateTimeOriginal". ie) This command would move the file "dir/image.jpg" with a "DateTimeOriginal" of "2005:10:12 16:05:56" to "2005/10/12/image.jpg".

jochen35
Beiträge: 63
Registriert: 03.10.2009 10:03:48

Re: Fotos per Cron-Job sortieren

Beitrag von jochen35 » 23.07.2016 13:36:59

rendegast hat geschrieben:
IMAGE_YYYYMMDD-HHmmss.jpg

Code: Alles auswählen

TGT="/path"
ls -1 | egrep "^IMAGE_[0-9]{6}-[0-9]{6}.jpg$" | while read IMG; do
    DTE=${IMG#IMAGE_}
    DTE=${DTE%-*}
    DIR="$TGT/$(echo $DTE | sed 's@\(....\)\(..\)\(..\)@\1/\2/\3@')"
    mkdir -p "$DIR" && mv $IMG "$DIR"
done
Super, vielen Dank. Genau das habe ich gesucht.

Einen kleinen Fehler habe ich noch korrigiert Das Datum besteht aus 8 statt aus 6 Ziffern.

Code: Alles auswählen

TGT="/path"
ls -1 | egrep "^IMAGE_[0-9]{8}-[0-9]{6}.jpg$" | while read IMG; do
    DTE=${IMG#IMAGE_}
    DTE=${DTE%-*}
    DIR="$TGT/$(echo $DTE | sed 's@\(....\)\(..\)\(..\)@\1/\2/\3@')"
    mkdir -p "$DIR" && mv $IMG "$DIR"
done
Viele Grüße
Jochen

Antworten