Programm das Aufnahmedatum ausliest und Datei nach diesem benennt?

2 Antworten

Vom Beitragsersteller als hilfreich ausgezeichnet

Diese Kommandozeilen-Anweisung benennt alle *.mov-Dateien im aktuellen Verzeichnis entsprechend deiner Vorgabe um:

for f in *.mov; do mv "$f" "$(date -r "$f" +%d%m%Y_%H%M.mov)"; done

Achtung: Wenn es mehrere Dateien gibt, die in derselben Minute erstellt wurden, dann würden die denselben Namen bekommen und sich daher gegenseitig überschreiben.


svenk2000350 
Beitragsersteller
 05.08.2024, 10:20

Boa danke. Bist echt ein pro! MOV musste großgeschrieben werden. Hat alles geklappt. Hammer

Noch eine Frage. Kann ich dem ganzen +2 Stunden hinzufügen, da die Aufnahmezeit mit MEZ ist und im PC CEST. Danke Dir

ultrarunner  05.08.2024, 11:25
@svenk2000350

Einfach noch -u hinzufügen, dann gibt 'date' die Zeit als UTC zurück:

for f in *.MOV; do mv "$f" "$(date -u -r "$f" +%d%m%Y_%H%M.MOV)"; done
svenk2000350 
Beitragsersteller
 05.08.2024, 09:55

Hmm Syntaxfehler beim unerwartetem Wort >>*.mov<<

svenk2000350 
Beitragsersteller
 05.08.2024, 09:09

Heftig. Vielen Dank. Werde ich nachher mal testen. 1000 Danke

Ich liebe die Antwort von ultrarunner.

Falls du es in Python machen möchtest:

import os
from datetime import datetime
import re

# Datei festlegen
file = '123.mov'

# Suche nach der Dateierweiterung
regex = r"\..*$"
match = re.search(regex, file)

# Dateierweiterung speichern
extension = match.group(0)

# Das Erstellungsdatum wird über os.stat in der Epochenzeit (glaube ich zumindest) auf Index 9 gespeichert. Das musst du noch konvertieren.
creation_date = os.stat(file)
converted_date = datetime.fromtimestamp(creation_date[9]).date()

# Umbenennen der Datei mit der Erweiterung
os.rename(file, f"{converted_date}{extension}")

Ist nicht perfekt - aber ein Ansatz.

Benötigst du es für mehrere Dateien, Schleife einbauen.

Ein paar Validierungen wären noch fällig.

Falls du kein Programmierer bist, gerne melden.


svenk2000350 
Beitragsersteller
 05.08.2024, 09:56

Danke