Am So, 24 Jul 2011 19:30:18 CEST schrieb Norbert Zawodsky:
Hallo Liste,
ich habe hier leider schon wieder ein Problem zu lösen das meine script+tools Kenntnisse übersteigt...
Ich habe eine Menge Fotos (.JPG) mit verschiedensten Dateinamen. Jetzt würde ich gerne die Dateien umbenennen und den Namen auf JJMMTT_HHMMSS.jpg setzen wobei dieser Zeitstempel aus den EXIF Informationen genommen werden soll.
Wenn es nur ein paar Fotos sind mache ich es händisch. Ich öffne die Datei mit Gwenview, und benenne sie auf das um was mir Gwenview anzeigt. Aber jetzt habe ich ein paar hundert Fotos vor mir ......
lässt sich das irgendwie mit einem script machen?
Natürlich ;-) Das Mittel der Wahl ist Exiftool. Ich gebe dir mal ein paar Ansätze. Auf Zeilenumbrüche musst du selber achten. MYCREATEDATE=`exiftool -q -q -s -s -s -XMP:CreateDate "$ORIGINALFILE"` oder MYORIGINALDATE=`exiftool -q -q -s -s -s -EXIF:DateTimeOriginal "$ORIGINALFILE"` Eventuell kommt noch "-EXIF:CreateDate" zur Bestimmung des Datums in Frage. Meistens sind die 3 Datumsfelder aber ident. Als Ergebnis hast du dann zB "2005:06:21 18:20:37" Nun würde _ich_ das in einen "sauberen Dateinamen" bringen, also zB so: echo "$MYORIGINALDATE" | sed 's/[: ]//g' oder echo "$MYORIGINALDATE" | sed -e 's/://g' -e 's/ /_/g' Das kannst du dann gleich kombinieren und in eine Variable stecken, also zB MYCREATEDATE=`exiftool -q -q -s -s -s -XMP:CreateDate "$ORIGINALFILE" | sed -e 's/://g' -e 's/ /_/g'` Mit dieser Variable erstellst du dann eine weitere Variable NEWFILE. Ich schreibe da eine ganze Menge in den Dateinamen. Schau dir mal an was "exiftool -G -H -a $ORIGINALFILE" alles ausgibt. Meine Originaldatei sieht zB so aus: 100529_1642_sa_blueten.macro.digicam_k20-original.pef Datum_Uhrzeit_Wochentag_Thema_Quelle_Modell Die bearbeitete Datei ist dazu 100529_1642_sa_blueten_82kb_1.80_40.0am_c_800i_4340x_k20.jpg Datum_Uhrzeit_Wochentag_Thema_Geschwindigkeit_Blende_diverse Einstellungen_ISO_Auflösung_Modell Achtung, das kann ganz schön komplex werden und man muss _sehr_ aufpassen, dass man keine Fotos _verliert_. Denke daran, dass bei Serienaufnahmen mehrere Fotos in der selben Sekunde gemacht werden können! Ich helfe mir damit, dass ich das vorher prüfe und verschiebe dann die Zeit der Aufnahme um 1 Sekunde. Das kommt selten vor, aber es kommt vor! Siehe dazu: http://www.sno.phy.queensu.ca/~phil/exiftool/#shift Nun musst du nur mehr alle Fotos in einer Schleife abarbeiten. Das kannst du etwa so machen: find /fotos/ -type f -name '*.jpg' | sort | while read -r PICFILE; do mv -i "$ORIGINALFILE" "$NEWFILE" done
Grüße aus Wien bei "perfektem" Juli-Wetter (13° und Regen)
Hier kannst du eine Schneeballschlacht machen ;-) Al PS: Mal schauen, ob David was zu kritisieren hat ;-) -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: opensuse-de+help@opensuse.org