Hallo Leute,
ich wusste nicht, in welche Kategorie das am besten passt...
Ich habe folgendes Problem: Ich habe bei einer Geburtstagsfeier mit 2 Digital-Kameras Bilder gemacht. Leider hatte eine der Kameras eine um 12 Stunden versetzte Zeit eingestellt. Die beiden Kameras produzierten unterschiedliche Dateinamen.
Wie kann ich die Dateien jetzt nach Erstellungszeit sortieren lassen? Ich möchte eine Diashow daraus basteln, sollte dafür aber die Uhrzeit der einen Bilder korrigieren.
Ich habe mir schon Überlegt: Erst trenne ich die Bilder in 2 Verzeichnisse anhand ihres Namens. Im einen lasse ich den Zeitstempel wie er ist, im anderen muss er um 12 Stunden geändert werden.
Wie kann ich dies bewerkstelligen, dass der Zeitstempel um 12 Stunden vor- bzw. zurückgestellt wird?
Vielen Dank im Voraus
Christian
PS: Es wäre sehr angenehm, wenn ich eine schnelle, unkomlizierte Lösung erfahren könnte. Die CD mit den Bildern sollte bald raus...
Diese Website existiert nur weil wir Werbung mit AdSense ausliefern.
Bitte den AdBlocker daher auf dieser Website ausschalten! Danke.
Bitte den AdBlocker daher auf dieser Website ausschalten! Danke.
Zeitstempel um 12 Stunden vor- bzw. zurückgestellen?
Moderator: Moderatoren
Moin,
Zeitstempel ändern - dabei hilft dir:
zum sortieren:
Zeitstempel ändern - dabei hilft dir:
Code: Alles auswählen
man touch
Code: Alles auswählen
man sort
Re: Dateien sorteren
Hallo Christian, oder Krename instalieren ist ein KDE-Programm zum umbenennen und hat auch ein Plugin für die Zeit.
Gruß, Hermann
Gruß, Hermann
Hallo Leute,
Danke schon mal
Leider hilft mir das aber nicht konkret.
Hier noch mal das Problem in Zahlen: Es handelt sich um ca. 350 Bilder! Ich habe die Bilder in 2 Verzeichnisse getrennt. Nun müssen in einem Verzeichnis die Zeitangaben um einen bestimmten Wert (ca. 8 Stunden 23 Minuten) geändert werden. Sie sollen aber nicht auf einen festen Wert eingestellt werden, sondern ihre relativen Abstände beibehalten. Als Ergebnis soll dann eine Sortierung nach der Zeit möglich sein, ohne dass ich per Hand jede Datei editiere.
Ideal wäre natürlich ein Shell-Script, wobei ich auch über jegliche andere Hilfe sehr froh wäre.
Danke noch mal
Christian
Danke schon mal
Leider hilft mir das aber nicht konkret.
Hier noch mal das Problem in Zahlen: Es handelt sich um ca. 350 Bilder! Ich habe die Bilder in 2 Verzeichnisse getrennt. Nun müssen in einem Verzeichnis die Zeitangaben um einen bestimmten Wert (ca. 8 Stunden 23 Minuten) geändert werden. Sie sollen aber nicht auf einen festen Wert eingestellt werden, sondern ihre relativen Abstände beibehalten. Als Ergebnis soll dann eine Sortierung nach der Zeit möglich sein, ohne dass ich per Hand jede Datei editiere.
Ideal wäre natürlich ein Shell-Script, wobei ich auch über jegliche andere Hilfe sehr froh wäre.
Danke noch mal
Christian
Habe dir mal ein script geschreiben mit dem du die Zeit nach vorne verstellen kannst um Stunden und Minuten. Welche Dateien du ändern willst, wird im SUCHSTRING eingestellt. Demnächst bitte die Zeiten der Kamera richtig stellen, ist bedeutend einfacher, sonst darft du mal zur Strafe so ein Script analysieren
. Hoffe es funktioniert.
Hoffe es sind nicht gerade Sylvesterbilder, Monatswechsel und Jahreswechsel habe ich nicht berücksichtigt. Probiere aber erst mal an irgenwelchen unkritischen Dateien unter /tmp oder so.
robi

Code: Alles auswählen
#!/bin/bash
# Zeitverschiebung Dateien werden um soviel aelter gemacht
DIFF_STUNDE=8
DIFF_MINUTE=23
# Mit SUCHSTRING die Dateien genauer beschreiben zB. test*.???
SUCHSTRING="*"
typeset -i JAHR
typeset -i MONAT
typeset -i TAG
typeset -i STUNDE
typeset -i MINUTE
for i in ` ls -d $SUCHSTRING ` ; do
HELP=$(ls -dl --time-style=+%Y%m%d%H%M $i | tr -s " " ";" | cut -f6 -d";")
JAHR=$(echo $HELP | cut -c1-4)
MONAT=10#$(echo $HELP | cut -c5-6)
TAG=10#$(echo $HELP | cut -c7-8)
STUNDE=10#$(echo $HELP | cut -c9-10)
MINUTE=10#$(echo $HELP | cut -c11-12)
MINUTE=$MINUTE+$DIFF_MINUTE
if [ $MINUTE -ge 60 ] ; then
MINUTE=$MINUTE-60
STUNDE=$STUNDE+1
fi
STUNDE=$STUNDE+$DIFF_STUNDE
if [ $STUNDE -ge 24 ] ; then
STUNDE=$STUNDE-24
TAG=$TAG+1
fi
HELP="$JAHR-$MONAT-$TAG $STUNDE:$MINUTE"
touch -d"$HELP" -m $i
done
robi
Ich würde das ganze in der Scriptsprache perl machen. Perl gehört zur Standardinstallation jeder Linux/Unix-Distribution. Da hat das ganze nur ein paar Zeilen.
Dieses Script behebt gleich mehrere Probleme:
1. die Ausgabe für "ls" sieht je nach alter der Datei und je nach verwendetem Filesystem anders aus. Ich glaube, standardmäßig wird ab einem halben Jahr die Zeit nicht mehr angezeigt dafür aber das Jahr. Daher sollte man "ls" nicht als Grundlage für solche Operationen verwenden.
2. Das Perl-Script würde auch unter Windows funktionieren, falls man dort Perl installiert hat.
3. So ziemlich alle Dateisysteme speichern die Zeit in Sekunden seit dem 1.Januar 1970 ab. Das Perl-Script arbeitet indern mit genau diesen Zeitangaben. Deswegen braucht man auch keine Jahreswechsel- oder Schaltjahrberechnungen machen.
4. Mit "utime" könnte mach auch das Datum des letzten Zugriffes setzen. In diesem Beispiel ist es auf die aktuelle Zeit gesetzt.
Code: Alles auswählen
#!/usr/bin/perl
$jetzt = time;
$plus_sekunden=12*60*60; # 12 Stunden
foreach $datei (</pfad/*.jpg>) {
($letzter_zugriff, $letzte_aenderung)=(stat($datei))[8,9];
utime $jetzt, $letzte_aenderung + $plus_sekunden, $datei;
}
1. die Ausgabe für "ls" sieht je nach alter der Datei und je nach verwendetem Filesystem anders aus. Ich glaube, standardmäßig wird ab einem halben Jahr die Zeit nicht mehr angezeigt dafür aber das Jahr. Daher sollte man "ls" nicht als Grundlage für solche Operationen verwenden.
2. Das Perl-Script würde auch unter Windows funktionieren, falls man dort Perl installiert hat.
3. So ziemlich alle Dateisysteme speichern die Zeit in Sekunden seit dem 1.Januar 1970 ab. Das Perl-Script arbeitet indern mit genau diesen Zeitangaben. Deswegen braucht man auch keine Jahreswechsel- oder Schaltjahrberechnungen machen.
4. Mit "utime" könnte mach auch das Datum des letzten Zugriffes setzen. In diesem Beispiel ist es auf die aktuelle Zeit gesetzt.