Einfaches Script/Programm für Datei Umbenennung

Cool Master

Fleet Admiral
Registriert
Dez. 2005
Beiträge
37.497
Ich bin auf der Suche nach einem Programm oder Script welches eine bzw. mehrere Dateien umbenennen kann.

Aktuell sind die Dateien so aufgebaut:

PostID-Datum-DateiName.Erweiterung

Daraus soll folgendes Schema gemacht werden:

Datum-PostID-DateiName.Erweiterung

Kennt ihr da ein Programm/Script welches das machen kann? Bevorzugt wäre MacOS kompatibel aber zur Not geht auch Windows.
 
kannst du ein paar Beispielnamen posten?

bzw: haben Datum und PostID immer das selbe Format / die selbe Laenge?
sprich:
Cool Master schrieb:
Datum-PostID-DateiName.Erweiterung
yyyymmdd-00003456-katzenfoto3.png


was du willst, geht im prinzip so:\

Bash:
for f in *.jpg; do     mv -- "$f" "${f%.jpg}.png"; done

da musst du diur halt im prinzip nur ID und dateum aus dem Dateinamen schnibbeln und anders herum zusammensetzen. Super easy, wenn die zeichen anzahl fix ist, ein wenig fummeliger, wenn du ne regex bauen musst.
 
Zuletzt bearbeitet:
  • Gefällt mir
Reaktionen: Cool Master
Du könntest z.B. mit der Microsoft Excel VBA-Entwicklungsumgebung ein Programm schreiben, welches die Zeichenketten splittet und neu zusammensetzt.
Nach ein bischen Einarbeitung in die VBA-Programmierung solltest Du das locker hinbekommen!
 
@madmax2010

Nein, haben nicht immer die gleiche Länge aber im Prinzip immer das gleiche Format. Hier mal ein paar Beispiele:

123854758-12-05-2021-2048x2940_d69c5c191fec6db57401c366782f78547458.jpg
14112551-07-12-2021-2048x2734_072cc8586d584cb5743476f2edad1624.jpg
148254214-20-05-2021-828x1444_1f131849da2fa566bef36eb97fefr487.jpg

@ella_one

Ja das wäre im Prinzip möglich aber das würde ich ungern tun. Da kann ich auch gleich ein Bash-Script oder ähnliches schreiben das wäre denke ich einfacher. Wobei ich hier auch erst schauen müsste wie ich Zeichenketten splitten und neu zusammensetzen kann.
Ergänzung ()

madmax2010 schrieb:
ein wenig fummeliger, wenn du ne regex bauen musst.

Darauf wird es wohl hinauslaufen und ja, ich hasse regex :D

Ich habe mal etwas experimentiert:

[0-9]-(0?[1-9]|[12][0-9]|3[01])[\-](0?[1-9]|1[012])[\-]\d{4}-.*

[0-9] = PostID
- = Bindestrich 1
(0?[1-9]|[12][0-9]|3[01])[\-](0?[1-9]|1[012])[\-]\d{4} = Datum
- = Bindestrich 2
.*= Dateiname

Das Problem welches ich aktuell noch habe ist, dass die PostID noch nicht richtig erkannt wird da wird nur die letze Zahl vor dem Bindestrick erkannt.
 
Zuletzt bearbeitet:
Ah sweet, ich bin mit RegEx-en auch nicht sonderlich flink.
Aber das reicht doch dann schon - wenn du das Datum findest, kannst du alles vor dem Datum in eine Variable packen, das datum in eine Variable packen, alles hinter dem Datum in eine Variable packen.
Direkt an diesen String bestandteilen schnibbelst du die - wie gewuenscht und bringst sie in die richtige Reihenfolge.
 
  • Gefällt mir
Reaktionen: Cool Master
Problem wurde erkannt :) Ich musste noch ein "+" setzen.

PostID-Datum-DateiName:

Code:
[0-9]+-(0?[1-9]|[12][0-9]|3[01])[\-](0?[1-9]|1[012])[\-]\d{4}-.*

Datum-PostID-DateiName:

Code:
(0?[1-9]|[12][0-9]|3[01])[\-](0?[1-9]|1[012])[\-]\d{4}-[0-9]*-.*

Das muss ich jetzt nur für bash umschreiben weil ein:

Bash:
print [0-9]+-(0?[1-9]|[12][0-9]|3[01])[\-](0?[1-9]|1[012])[\-]\d{4}-.*

Gibt mir "no matches found".
 
Zuletzt bearbeitet: (Musste code-Tags setzen, da Inhalt vom Forum entfernt wurde.)
FILENAME=14112551-07-12-2021-2048x2734_072cc8586d584cb5743476f2edad1624.jpg
DATE=$(echo $FILENAME |grep -Eo '[[:digit:]]{2}-[[:digit:]]{2}-[[:digit:]]{4}')
IDNUM=$(echo ${FILENAME%%-*})
 
  • Gefällt mir
Reaktionen: Cool Master
@madmax2010

Edit:

Habe den Fehler gefunden.

Edit 2:


So ganz will es noch nicht, bin noch am debuggen ich poste dann das End-Script.

Edit 3:

Bash:
#!/bin/sh
for file in *.jpg;
do
    FULLFILENAME=$(echo ${file##*/})
    
    DATE=$(echo $FULLFILENAME | grep -Eo '[[:digit:]]{2}-[[:digit:]]{2}-[[:digit:]]{4}')
    IDNUM=$(echo ${FULLFILENAME%%-*})
    FILENAME=$(echo $FULLFILENAME | grep -Eo '[0-9]+x[0-9]+_.*')

    mv $FULLFILENAME $DATE-$IDNUM-$FILENAME
done
 
Zuletzt bearbeitet:
  • Gefällt mir
Reaktionen: madmax2010 und mae1cum77
Zurück
Oben