Bilder nach Erstellungsdatum durchnummerieren lassen

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
Benutzeravatar
rksteve
Beiträge: 716
Registriert: 11.09.2003 12:24:53
Kontaktdaten:

Bilder nach Erstellungsdatum durchnummerieren lassen

Beitrag von rksteve » 08.12.2004 14:21:42

Hallo!

Ich bin auf der Suche nach einem Script dass alle Dateien in einem Ordner automatisch Namen vergibt nach dem Erstellungsdatum und Uhrzeit.

Es sollten also die Dateien von 1 bis xx nach der Erstellungsreihenfolge durchnummeriert werden.

Hat jamend zufällig so etwas oder kann sowas auf die schnelle machen? (ich kanns nämlich nicht ;-( ).

schon mal einen herzlichen Dank,

Gruss
Steve

Benutzeravatar
se8i
Beiträge: 1017
Registriert: 08.11.2002 17:02:20
Wohnort: nähe Karlsruhe
Kontaktdaten:

Beitrag von se8i » 08.12.2004 14:31:14

ich hab mal was geschrieben, um bilder von meiner nikon kamera nach dem datum zu benennen:

Code: Alles auswählen

for i in *.jpg
do
mv $i `echo $(exif $i | grep Datum | grep -v "(o" | grep -v "(d" | sed -e 's/Datum und Uhrzeit   |//g' | sed -e 's/$/.jpg/g' | sed -e 's/:/-/g') | sed -e 's/ .jpg/.jpg/g' | sed -e 's/ /_/g'
done
Das funktioniert wahrscheinlich nicht mit jeder kamera, aber es könnte dir auch als anhaltspunkt dienen. wenn du das datum aus den dateieigenschaften lesen willst, geht es bestimmt noch einfacher.
Jazz is not dead, it just smells funny.

roli
Beiträge: 3174
Registriert: 10.09.2003 17:39:58

Beitrag von roli » 12.12.2004 14:02:53

Hi,

versuch doch mal

Code: Alles auswählen

zaehler=0
for i in $(ls -tr *.jpg)
do
  zaehler=$zaehler+1
  mv $i $zaehler
done
Du kannst damit auf- oder absteigend sortieren (Parameter -r beim ls). Ich hab's aber nicht getestet.
Roland


"Aber wenn du schon so unwissend bist, davon noch nicht gehört zu haben,
so will ich es doch als gut ansehen, daß du lieber einmal töricht fragst,
als weiterhin nichts von etwas zu wissen, das man doch wissen sollte."
aus "Die Edda des Snorri Sturluson", "Gylfis Täuschung"

Benutzeravatar
rksteve
Beiträge: 716
Registriert: 11.09.2003 12:24:53
Kontaktdaten:

Beitrag von rksteve » 13.12.2004 17:28:13

@se81:

ich bekomme folgende Meldung:
../reihe: line 4: unexpected EOF while looking for matching ``'
../reihe: line 6: syntax error: unexpected end of file
steve@Debian:~/test$

eine Idee woran das liegen könnte, ich habe es einfach mit copy & paste kopiert. was bedeutet das ` -Zeichen vor dem echo?


@roli:

Da ist wohl noch ein kleiner Bug drinnen, ich erhalte folgenede Files:

0+1
0+1+1
0+1+1+1
(ohne Enduung .JPG)


Trotzdem einen schönen Danke schon mal für Eure unterstützung.

Gruss
Steve

Benutzeravatar
Joghurt
Beiträge: 5244
Registriert: 30.01.2003 15:27:31
Wohnort: Hamburg
Kontaktdaten:

Beitrag von Joghurt » 13.12.2004 19:23:46

rksteve hat geschrieben:Da ist wohl noch ein kleiner Bug drinnen, ich erhalte folgenede Files:
Richtig heißt es:

Code: Alles auswählen

zaehler=$(expr $zaehler + 1)
Oder noch einfacher im Bash-Syntax:

Code: Alles auswählen

zaehler=$((zaehler+1))
Im ersten Fall die Leerzeichen beachten, im zweiten die doppelten Klammern!

roli
Beiträge: 3174
Registriert: 10.09.2003 17:39:58

Beitrag von roli » 14.12.2004 12:53:38

Hi,

Code: Alles auswählen

zaehler=0
for i in $(ls -tr *.jpg)
do
  zaehler=eval($zaehler+1)
  mv $i $zaehler
done
Alternativ kannst du das eval auchdurch ein let ersetzen. Wenn's dann noch nicht gehen sollte nimm: "zaehler=$(eval ($zaehler + 1))"

Roland

P.S. ist auch wieder ungetestet, da ich im Moment an einer Windoofs Kiste sitze(n muss)
Roland


"Aber wenn du schon so unwissend bist, davon noch nicht gehört zu haben,
so will ich es doch als gut ansehen, daß du lieber einmal töricht fragst,
als weiterhin nichts von etwas zu wissen, das man doch wissen sollte."
aus "Die Edda des Snorri Sturluson", "Gylfis Täuschung"

roli
Beiträge: 3174
Registriert: 10.09.2003 17:39:58

Beitrag von roli » 14.12.2004 12:55:48

roli hat geschrieben:Hi,

Code: Alles auswählen

zaehler=0
for i in $(ls -tr *.jpg)
do
  zaehler=eval($zaehler+1)
  mv $i $zaehler
done
Alternativ kannst du das eval auchdurch ein let ersetzen. Wenn's dann noch nicht gehen sollte nimm: "zaehler=$(eval ($zaehler + 1))"

Roland

P.S. ist auch wieder ungetestet, da ich im Moment an einer Windoofs Kiste sitze(n muss)
<edit>Da war ja schon wer schneller, habe halt im Moment nicht die Zeit das alles so intensiv zu lesen</edit>
Roland


"Aber wenn du schon so unwissend bist, davon noch nicht gehört zu haben,
so will ich es doch als gut ansehen, daß du lieber einmal töricht fragst,
als weiterhin nichts von etwas zu wissen, das man doch wissen sollte."
aus "Die Edda des Snorri Sturluson", "Gylfis Täuschung"

Benutzeravatar
rksteve
Beiträge: 716
Registriert: 11.09.2003 12:24:53
Kontaktdaten:

Beitrag von rksteve » 14.12.2004 17:19:59

Oh danke an alle, jetzt funktionierts.

Gruss
Steve

Antworten