newhippie
Anmeldungsdatum: 4. Januar 2009
Beiträge: 248
Wohnort: Leipzig
|
Hallo, ich suche schon den ganzen Tag nach einer Möglichkeit mehrere Dateien gleichzeitig um zu benennen, und zwar folgender maßen: 2007-03-15-001.jpg
2007-03-15-002.jpg
2007-03-15-003.jpg
2008-08-20-001.jpg
2008-08-20-002.jpg Also dass die Laufnummer mit jedem neuen Datum wieder bei der eins beginnt. am besten wäre es, wenn es dazu etwas (zB ein Plugin) für digikam geben würde, denn damit arbeite ich eh schon. Ich habe weiterhin Krename ausprobiert, da gibt es derzeit keine Möglichkeit die Metadaten von den Fotos zu nehmen, außerdem, geht die Nummerierung nicht einzustellen.
Dann habe ich pvrenamer angeschaut aber nichts gefunden, zum Schluss Metamorphose, aber auch dort gibt es diese Einstellung nicht. Kann mir vielleicht einer helfen? Am besten mit ner GUI , denn meine Verwandschaft soll es auch benutzen können...
Danke schon mal )
|
frustschieber
Ehemalige
Anmeldungsdatum: 4. Januar 2007
Beiträge: 4256
|
wenn Du alle Bilder vom gleichen Datum jeweils ins krename einlädst, kannst Du die doch auf fortlaufende Nummerierung umbenennen
Name = Benutzerspezifisch = 2009-01-01 ## macht Dir 2009-01-01 01, 2009-01-01 02 usw
|
newhippie
(Themenstarter)
Anmeldungsdatum: 4. Januar 2009
Beiträge: 248
Wohnort: Leipzig
|
Ja, natürlich würde das gehen, aber ist ein wenig aufwendig bei 5000 Bildern und einer Zeitspanne von 2004 bis 2009...
|
diesch
Anmeldungsdatum: 18. Februar 2009
Beiträge: 5072
Wohnort: Brandenburg an der Havel
|
Wie heißen die Dateien denn momentan, und woher kommen das Datum und die Reihenfolge der Nummerierung?
|
newhippie
(Themenstarter)
Anmeldungsdatum: 4. Januar 2009
Beiträge: 248
Wohnort: Leipzig
|
Na die heißen jetzt zB IMG1946.jpg oder sowas in der Richtung. Baer ist ja auch egal, das Datum soll aus den EXIF kommen und die Reihenfolge sich nach der Aufnahmezeit richten... also soll die Zahl sozusagen die Angabe der Stunden Minuten und Sekunden ersetzen...
|
Kinch
Anmeldungsdatum: 6. Oktober 2007
Beiträge: 1261
|
Du könntest mal schauen, ob das das gewünschte Datumsformat für eine der jpgs liefert: identify -verbose <dateiname> |grep --max-count=1 date | sed -r 's/^.*([0-9]{4}-[0-9]{2}-[0-9]{2}).*$/\1/' Das Identify-Kommando kann aber leider etwas dauern. Das Heraufiltern des Datums aus den exif-Daten ist aber nur sinnvoll, wenn deine Dateien bisher keine chronologische Ordnung haben.
|
newhippie
(Themenstarter)
Anmeldungsdatum: 4. Januar 2009
Beiträge: 248
Wohnort: Leipzig
|
Ne, dann wird es nicht sinnvoll sein, denn die Bilder werden schon in der richtigen Reihenfolge aufgelistet (digikam und nautilus) also ist die Frage wirklich nur die Umbenennung. Das es möglich ist, weis ich schon seit ein paar Jahren von Windows noch, aber jetzt will ich es eben mit Linux machen...
|
Kinch
Anmeldungsdatum: 6. Oktober 2007
Beiträge: 1261
|
Mit keiner chronoogischen Ordnung, meinte ich, dass auf Dateisystem-Ebene. Das heißt ihr Datum steht weder im Dateiname noch im Ordner wo sie sich befinden (manche Programme legen ja pro Tag einen neuen Ordner an). Das Photo-Verwaltungssoftware die Bilder chronologisch anzeigen können ist klar, weil sie Exif-Daten legen, bzw. ne Datenbank pflegen. Nutzt aber bei einem Shellskript leider nicht. Das Problem, für mich im Moment ist einfach nur, das richtige Datum pro Bild zu bekommen; die Umbenennung ist nicht weiter schwer dann. Leider kenne ich dazu nur identify. Der Nautilus listet meiner Meinung nach, nach Dateinahme auf, oder? Es ist dann eher nur zufällig, dass die die richtige Reihenfolge haben, weil die Kamera eine fortlaufende Nummer für einen Dateinamen vergibt und die frühsten Bilder deshalb auch die mit der kleinsten Nummer sind.
|
diesch
Anmeldungsdatum: 18. Februar 2009
Beiträge: 5072
Wohnort: Brandenburg an der Havel
|
Irgendwie sowas: exiftool -d '%Y-%m-%d %s' -p '$FileName $DateTimeOriginal' * | sort -n -k3 | while read FILE DATE EPOCH; do
...
done In der Schleife muss man dann noch den Zähler hochzählen und zurücksetzen, wenn $DATE sich ändert, und dann die Datei umbenennen.
|
newhippie
(Themenstarter)
Anmeldungsdatum: 4. Januar 2009
Beiträge: 248
Wohnort: Leipzig
|
Also der befehl spuckt einfach das heutige Datum raus, wenn ich mit cd in irgendeinen Ordner gehe und dann einen Namen einer Datei reischreibe... Mit Nautilus hast du natürlich recht, dass es Zufall ist. Aber alle vier obenaufgelistete Programm können die Fotos so umbennen, dass das Datum aus der EXIF ausgelesen wird. Blos leider ist die Laufnummer wirklich eine Durchlaufnummer und startet nicht wieder neu beim nächsten Datum... Bis jetzt bin ich an dieser Stelle angekommen. Habe jetzt jhead installiert und bekomme mit folgendem Befehl:
find -iname \*jpg -exec jhead -nf%Y-%m-%d_%i {} \+
Das gleiche hin, was ich auch in anderen Programmen hatte, also ein laufende Numemr. wenn es jetzt nun möglich wäre find so einzurichten, dass es automatisch jeweils einen Tag an jhead übergeben könnte, wäre das Problem gelöst )
|
Antiqua
Anmeldungsdatum: 30. Dezember 2008
Beiträge: 4532
|
das Funktioniert bei mir für genau das was du willst. 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59 | #!/bin/bash
# Bilddateien im aktuellen Verzeichnis nach
# Datum und laufender Nummer umbenennen.
#
# zusammengestoppselt von Antiqua,
# das Werk steht unter der "MachDamitWasImmerDuWillst"- und der
# "IchUebernehmeAufKeinenFallDieVerantwortungFuerIrgendwas"-Lizenz
#-------------------------------------------------------
# momentan noch nicht scharfgeschaltet. wenn das Ergebnis
# passt, einfach die Kommentarzeichen vor den beiden
# mv-Zeilen entfernen.
# Noetig wegen der evtl. Leerzeichen in den Dateinamen
OLDIFS=$IFS
IFS=$'\12'
# hier momentan JPG, muesste mit allen Bilddateien gehen, die EXIF Datum enthalten
DATEIENDUNG=jpg
#eine Variable, bitte diese nicht aendern
REFDATUM="Das Datum"
# An das Datum angehaengte Zahlen, die kann man aendern bzw anpassen
STELLEN=3 # Wieviele Stellen sollen angehaengt werden
BEGINNAB=1 # ab welcher Zahl wird gezaehlt
FUELL=000000000000 # Aufzufuellende Zeichen, hier Nullen
for i in $(find . -name "*.$DATEIENDUNG") ;
do
# liest Datum und Zeit aus Exif und wandelt in die Form yyyy-mm-dd-hh-mm-ss etc.
DATUMZEIT=$(identify -format "%[EXIF:DateTime]" $i | sed 's/[\:\ ]/\-/g')
DATUM=${DATUMZEIT:0:10}
ZEIT=${DATUMZEIT:11:8} # wird nicht gebraucht, aber es stoert auch nicht
if [ "$DATUM" != "$REFDATUM" ]
then
echo "--------------------------------------------------"
echo "$REFDATUM hat sich zu $DATUM geaendert."
echo " Zaehlung beginnt wieder bei $BEGINNAB"
echo "--------------------------------------------------"
COUNT=$BEGINNAB
ZAN=$(printf $FUELL$COUNT)
ZAHL=${ZAN: -$STELLEN}
#mv "$i" $(printf $DATUM-$ZAHL).$DATEIENDUNG
echo $i wird zu $(printf $DATUM-$ZAHL).$DATEIENDUNG
let ++COUNT;
REFDATUM=$DATUM
else
ZAN=$(printf $FUELL$COUNT)
ZAHL=${ZAN: -$STELLEN}
#mv "$i" $(printf $DATUM-$ZAHL).$DATEIENDUNG
echo $i wird zu $(printf $DATUM-$ZAHL).$DATEIENDUNG
let ++COUNT;
fi
done
# IFS wieder geraderuecken
IFS=$OLDIFS
|
|
computerazubi
Anmeldungsdatum: 16. September 2008
Beiträge: Zähle...
Wohnort: Österreich
|
Hi, möglicherweise hilft: http://www.amok.am/index.php?page=progr&id=9 Der EXIF-Sorter kann auch automatisch die Bilder umbenennen. Leider kenne ich das Programm nicht unter Ubuntu sondern aus einer anderen Welt. Laut Hersteller-Website funkt es auch unter Linux! cu computerazubi
|
Kinch
Anmeldungsdatum: 6. Oktober 2007
Beiträge: 1261
|
Antiquas-Lösung sieht doch schon ganz gut, hat nur den Schönheitsfehler, dass unter Umständen Bilder überschrieben werden. Sollte aber wenn, die Bilder chronologisch nummeriert sind eigentlich nicht passieren.
|
Antiqua
Anmeldungsdatum: 30. Dezember 2008
Beiträge: 4532
|
Kinch schrieb: Antiquas-Lösung sieht doch schon ganz gut, hat nur den Schönheitsfehler, dass unter Umständen Bilder überschrieben werden. Sollte aber wenn, die Bilder chronologisch nummeriert sind eigentlich nicht passieren.
das Script dürfte nur Bilder überschreiben, wenn im Verzeichnis Dateien existieren, die den selben Namen haben, der gerade generiert wird. Die müssten dann auch noch ein EXIF-Datum haben, daß vom Namen abweicht und zeitlich nach dem Namen liegt. Also eine Datei mit dem Namen 2009-09-09-001.jpg, die aber z.B. das EXIF-Datum 2009:09:10 haben. Gleichzeitig muss noch eine Datei existieren, deren Namen sortiertechnisch vor 2009-09-09-001.jpg kommt und das EXIF-Datum 2009:09:09 hat. Ich denke, das ist ziemlich unwahrscheinlich. Aber ich habe ja vorsichtshalber das Script noch nicht scharf geschaltet, so kann jeder erst mal im Testflug überpfrüfen, was das Script genau anrichtet. Man könnte natürlich auch noch eine kleine Überprüfung einbauen, die schaut ob eine Datei mit dem zu schreibenden Namen schon existiert. Oder $ZEIT noch (evtl. modifiziert ohne Sekunden z.B) in den Namen reinbauen. Kann ja jeder machen. ☺ Mir reichts so, weil meine Bilder idR. als img_wxyz.jpg von der Camera kommen.
|
diesch
Anmeldungsdatum: 18. Februar 2009
Beiträge: 5072
Wohnort: Brandenburg an der Havel
|
Hier noch meine Variante in vollständig: #!/bin/sh
cnt=0
prev=''
exiftool -d '%Y-%m-%d %s' -p '$FileName $DateTimeOriginal' * | sort -n -k3 | while read FILE DATE EPOCH; do
if [ "$prev" = "$DATE" ]; then
cnt=$(( cnt+1 ))
else
cnt=1
fi
prev="$DATE"
mv "$FILE" "$(printf "%s-%03d" "$DATE" "$cnt")"
done Das Skript funktioniert nicht, wenn zwei aufeinander folgende Bilder in weniger als 1 Sek. Abstand gemacht wurden. Es prüft nicht, ob eine Datei schon existiert (das ist aber einfach zu ergänzen)
|