Sie sind nicht angemeldet.

Lieber Besucher, herzlich willkommen bei: Ubuntu-Forum & Kubuntu-Forum | www.Ubuntu-Forum.de. Falls dies Ihr erster Besuch auf dieser Seite ist, lesen Sie sich bitte die Hilfe durch. Dort wird Ihnen die Bedienung dieser Seite näher erläutert. Darüber hinaus sollten Sie sich registrieren, um alle Funktionen dieser Seite nutzen zu können. Benutzen Sie das Registrierungsformular, um sich zu registrieren oder informieren Sie sich ausführlich über den Registrierungsvorgang. Falls Sie sich bereits zu einem früheren Zeitpunkt registriert haben, können Sie sich hier anmelden.

  • »SvenS.« ist der Autor dieses Themas

Beiträge: 11

Registrierungsdatum: 03.11.2009

Derivat: Ubuntu

Architektur: 32-Bit PC

Desktop: Unity

  • Nachricht senden

1

26.09.2012, 13:00

Skript für batch Prozess Ordner Umbenennung

Hallo zusammen

ich such bzw. versuche ein Skript zu erstellen, welches in spezieller Art und Weise mehrere Ordner umbenennt.

Alle umzubenennenden Ordner liegen in einem Überordner.

Die Ordner enthalten Bilder oder Unterordner mit Bildern.

Jeder Ordnername soll ein Präfix bekommen. Dieses Präfix ist das erste und das letzte Datum (getrennt durch Bindestrich) der Fotos die in den Ordnern liegen.

D.h. enthält der Ordner

"1 Mai"

Fotos vom 30. April 2012 bis 02. Mai 2012 soll er in Zukunft heißen

"20120430-20120502-1 Mai"

Wenn ausschließlich Fotos vom 1. Mai im Ordner enthalten wären dann würde er heißen:

"20120501-1 Mai"

Wer weiss wie ein solches Skript aussehen müsste?

Freue mich auf eure Hilfe.

Vielen Dank.

Sven

  • »maettu« ist männlich

Beiträge: 3 299

Registrierungsdatum: 14.09.2005

Derivat: Xubuntu

Architektur: 64-Bit PC

Desktop: XFCE

  • Nachricht senden

2

26.09.2012, 13:58

Zitat

Wer weiss wie ein solches Skript aussehen müsste?
du erwartest jetzt aber nicht, dass dir jemand hier im Forum ein solches Skript schreibt?

So ein paar Tipps kann ich dir geben. Also respektive Fragen die du klären musst.
Wichtig ist zunächst mal ein Backup von diesen Ordnern zu erstellen.
Dein Problem würde ich zunächst mal in kleinere Probleme zerlegen.


a) Das ganze Skript soll in der Bash geschrieben werden? Hast du eventuell Erfahrung mit einer Programmiersprache? Am einfachsten nimmst du diese Programmiersprache in der du etwas Erfahrung hast.

b) Mit Datum meinst du eigentlich das Erstellungsdatum der Datei, oder soll da auf Exif-Daten der Bilder zugegriffen werden?

c) Zunächst mal nur mit einem Ordner und Bildern arbeiten, damit meine ich die Rekursion (also die Unterordner) kommt im nächsten Schritt.

Sonst würde ich mir mal noch die Reihenfolge überlegen wie dein Skript arbeiten soll also im Stil von:
1. Schritt: Finde "ältestes Foto" und "neuestes Foto" (hier gilt zu beachten was ist mit Dateien die keine Fotos sind?)
2. Schritt: Setze neuen Ordnernamen-String zusammen
3. Schritt: Umbennen des Ordners

Wenn du das mal hast kommt noch die Rekursive Wiederholung, d.h. du musst nur herausfinden wie du Schritt 1-3 repetitiv auf den richtigen Ordner anwenden kannst.
Wichtig bei Rekursion ist eine clevere Abbruchbedingung, dein Skript muss ja irgendwann mal fertig sein.

  • »SvenS.« ist der Autor dieses Themas

Beiträge: 11

Registrierungsdatum: 03.11.2009

Derivat: Ubuntu

Architektur: 32-Bit PC

Desktop: Unity

  • Nachricht senden

3

26.09.2012, 14:55

Hallo Maettu

vielen Dank für deine schnelle Hilfe. Wenn ich ganz ehrlich sein muss, dann hatte ich schon etwas darauf gehofft weil ich gar nicht programmieren kann. :-)

Aber vielleicht ist es noch besser ich lerne noch etwas dabei! Das folgende Skript hatte ich beim Googlen gefunden verstehe aber nicht die Syntax und weiss es nicht anzupassen auf meine Bedürfnisse:

Quellcode

1
2
3
4
5
6
7
#!/bin/bash
find -iname '*.jpg' | while read IMAGE
do echo "Processing $IMAGE"
DATE=$(exiftool -p '$DateTimeOriginal' $IMAGE | sed 's/[: ]//g')
touch -t $(echo $DATE | sed 's/\(..$\)/\.\1/') $IMAGE
mv -i $IMAGE $(dirname $IMAGE)/$DATE.jpg
done


Die Erklärung dazu lautet:
Es sucht im aktuellen und allen untergeordneten Verzeichnissen nach JPEG
Bildern. Mit dem Kommandozeilentool exiftool wird das Datum der
Bildaufnahme aus den EXIF Informationen der Bilddatei ausgelesen und mit
dem anschliessendem sed werden die Leerstellen und Doppelpunkte
entfernt. Touch setzt das Dateidatum auf das ausgelesene Datum. Dabei
müssen die Sekunden (die letzten zwei Stellen) mit einen Punkt
abgetrennt werden, was das zweite sed erledigt. Danach wird die Datei
noch umbenannt. Die "-i" Option von mv Befehl sorgt dafür, dass keine
Bilder mit gleichem Datum überschrieben werden.

Wie kann ich hier am besten "angreifen"?

Zu deinen Fragen:

1) Ja Bash ist glaube ich gut. Wie gesagt nein bzw. vor 20 Jahren hab ich mal Turbo Pascal gelernt und vor 2 Jahren mir "autodidaktisch" etwas VB in Excel angelernt. Das war aber auch alles.
2) Mir reicht das Erstelldatum welches auch im Nautilus Browser angezeigt wird.
3) Gerne. Bestimmt sinnvoll.

Reihenfolge stelle ich mir wie folgt vor:

1. Durchsuche Ordner/Unterordner nach jpg, mpg und avi Dateien.
2. Lese bei jeder gefundene Datei das Erstellungsdatum aus und speichere es in eine Variabel ("DatumaktuelleDatei").
3. Prüfe ob das gefundene Datum jünger ist als bisher jüngste gefundene Datum ("DatumAktuelleDatei">"JüngstesDatumImOrdner") bzw. älter ist als das älteste bisher gefundene Datum ("DatumAktuelleDatei"<"ÄltestesDatumImOrdner".
4. Schritt: Setze neuen Ordnernamen-String zusammen

5. Schritt: Umbenennen des Ordners

Schade dass ich nicht richtig programmieren kann, aber vielleicht bekommen wir es ja dennoch zusammen gebacken.

Vielen Dank.

PS: Wenn es ein Programm gibt welches diese Funktion hat würde ich auch das sofort nehmen aber da bin ich recht sicher, dass es das nicht gibt.