GELÖST: Unterstüzung an Script für Dateiumbenennung

Status
Für weitere Antworten geschlossen.

geimist

Benutzer
Sehr erfahren
Maintainer
Mitglied seit
04. Jan 2012
Beiträge
5.569
Punkte für Reaktionen
1.397
Punkte
234
Ich schreibe gerade ein Skript, dass nach einem individuellen Muster, dass in einer parallel zum Script abgelegten Konfiguration.txt abgelegt ist, Dateinamen (Fernsehsendungen von OTR) umbenennt.
Dazu 'zerhacke' ich zunächst den Originalnamen in die entsprechenden Teile und füge diese dann entsprechend dem Muster in der Konfiguration.txt aneinander.

Beispiel:
Tagesschau_14.07.15_14-00_ard_10_TVOON_DE.mpg.HQ.avi
besteht aus Titel Jahr Monat Tag Stunde Minute Sender Dauer und ganz am Schluss der Qualität ("TVOON_DE.mpg" ist irrelevant, aber fester Bestandteil der Originalnamen).
und wird z.B. zu:
Tagesschau [2014-07-15 ARD] HQ.avi​


In der Variablen "NewName" aus der Konfiguration.txt steht eine Zeichenkette mit den Aliassen für die gewünschten Parameter. Der Wert von NewName für obiges Beispiel:
Rich (BBCode):
NewName="§tit [§ylong-§mon-§day §cha] §qua"

Diese Aliasse ersetze ich am Ende des Scripts mit Hilfe der entsprechenden Variablen mit den korrekten Werten mit Hilfe von sed.

Beispiel für die Dauer:
Rich (BBCode):
NewName=`echo $NewName | sed 's/§dur/$duration/g'`
§dur ist hier der Alias für die Dauer in der Konfiguration.txt. Das § verwende ich vor den Aliassen, um zufällig gleichlautende Zeichenfolgen zu vermeiden (ich glaube, das § hat keine feste Bedeutung in der Shell … )

Frage 1:
Derzeit ist es so, dass $duration in obigen Code bei sed nicht als Variable sondern als Zeichenkette inkl. $ behandelt wird. Wie muss ich das ändern um §dur durch den Wert der Variablen $duration zu ersetzen?

Frage 2:
Ich bräuchte noch Hilfe, um den Sender zu separieren. Evtl. ausgehend von "TVOON" > die Zeichen zwischen dem 2 und 3. Unterstrich vor TVOON … (aber wie)?


EDIT:
Frage 1 konnte ich inzwischen doch noch beantworten:
Rich (BBCode):
NewName=`echo $NewName | sed "s/§dur/${duration}/g"`
Die sed-Parameter in doppelte Anführungszeichen und den Variablennamen in eine geschweifte Klammer.


EDIT 2:
Frage 2 ist jetzt auch beantwortet :D
Es ist doch immer so. Man sucht ewig, dann fragt man, und schließlich findet man doch noch die Antwort selber …

Zeichenkette mit rev umkehren und dann mit awk den 4 Bereich rauspicken
Rich (BBCode):
Channel=$(echo "$filename" | rev | awk -F '_' '{print $4}' | tr [:lower:] [:upper:] | rev)
 
Zuletzt bearbeitet:
Status
Für weitere Antworten geschlossen.
 

Kaffeautomat

Wenn du das Forum hilfreich findest oder uns unterstützen möchtest, dann gib uns doch einfach einen Kaffee aus.

Als Dankeschön schalten wir deinen Account werbefrei.

:coffee:

Hier gehts zum Kaffeeautomat