2016-04-09 16 views
-1

Ich habe Dateien, deren Namen ich ändern möchte.Einfügen vor Großbuchstaben

Beispiel:

HawaiiFive02010SXXEXXW.ac3 
Nashville2012SXXEXXW.ac3 
HowToGetAwayWithMurderSXXEXXW.ac3 
BetterCallSaulSXXEXXW.ac3 
BeautyAndTheBeast2012SXXEXXW.ac3 

Ich brauche sie konvertieren:

Nashville.2012.SXXEXX.W.ac3 
How.To.Get.Away.With.Murder.SXXEXX.W.ac3 
Better.Call.Saul.SXXEXX.W.ac3 
Beauty.And.The.Beast.2012.SXXEXX.W.ac3 
Hawaii.Five.0.2010.SXXEXX.W.ac3 

ich dies gefunden:

echo Nashville2012SXXEXXW.ac3 | sed 's/[A-Z]/.&/g;s/^.//' 
Nashville2012.SXX.EXX.W.ac3 
echo HowToGetAwayWithMurderSXXEXXW.ac3 | sed 's/[A-Z]/.&/g;s/^.//' 
How.To.Get.Away.With.Murder.SXX.EXX.W.ac3 

Wenn es nicht möglich ist, die Dateinamen zu ändern, würde ich nennen sie selbst. Ich will nur wissen, ob dies würde potenziell möglich sein, einen Weg zu finden, aber wenn es zu kompliziert ich verbringen, da der Rest des Skripts funktioniert :)

+0

Ich bekomme 'echo Nashville2012SXXEXXW.ac3 | sed 's/[A-Z] /. &/g; s /^.// ' Nashville2012.S.X.X.E.X.X.W.ac3' (wie ich es erwarten würde). Bitte posten Sie Ihre echten Daten. UND bekommen 'Nashville.2012'. wird nicht einfach sein. Viel Glück. – shellter

+1

Sie müssen genauer sein, was Sie wollen. Der Titel fragt nach Punkten vor Großbuchstaben, aber im HawaiiFive0-Beispiel setzt man keine Punkte vor die Xs und das E, und man setzt vor die ersten 0 einen Bindestrich. – pjh

+0

@pjh Um fair zu sein, habe ich den Titel bearbeitet, aber vorher war es "BASH Ersetze Großbuchstaben von Zeichenketten mit einem Punkt und einem Großbuchstaben", was nicht darauf hinweist, dass es auch nur der erste einer Gruppe von Großbuchstaben sein sollte. –

Antwort

2

Mit GNU sed:

sed -r 's/([A-Z][^A-Z.]+)/\1./g;s/[0-9]{4}/.&/g;s/([0-9])([0-9]{4})[^$]/\1.\2./;s/SXXEXXW/SXXEXX.W/;s/(S[0-9][0-9])\./\1/' 

Beispiel:

$ echo Nashville2012SXXEXXW.ac3 | sed -r 's/([A-Z][^A-Z.]+)/\1./g;s/[0-9]{4}/.&/g;s/([0-9])([0-9]{4})[^$]/\1.\2./;s/SXXEXXW/SXXEXX.W/;s/(S[0-9][0-9])\./\1/' 
Nashville.2012.SXXEXX.W.ac3 

$ echo HowToGetAwayWithMurderSXXEXXW.ac3 | sed -r 's/([A-Z][^A-Z.]+)/\1./g;s/[0-9]{4}/.&/g;s/([0-9])([0-9]{4})[^$]/\1.\2./;s/SXXEXXW/SXXEXX.W/;s/(S[0-9][0-9])\./\1/' 
How.To.Get.Away.With.Murder.SXXEXX.W.ac3 

$ echo HawaiiFive02010S03E08W.ac3 | sed -r 's/([A-Z][^A-Z.]+)/\1./g;s/[0-9]{4}/.&/g;s/([0-9])([0-9]{4})[^$]/\1.\2./;s/SXXEXXW/SXXEXX.W/;s/(S[0-9][0-9])\./\1/' 
Hawaii.Five.0.2010.S03E08.W.ac3 
+0

Schön! Vielen Dank: D! aber 'Echo Nashville2012S03E18W.ac3 | sed -r 's/([A-Z] [^ A-Z.] +)/\ 1./g;s/[0-9]{4}/. &/g; s/([0-9]) ([0-9] {4}) [^ $]/\ 1. \ 2 ./; s/SXXEXXW/SXXEXX.W/' Nashville.2012.S03.E18 .W.ac3 und nicht Nashville.2012.S03E18.W.ac3' –

+0

Aktualisiert. 'SXXEXX' ist nicht' S03E18'. Thats, was in Ihren Kommentaren von Benjamin W. hingewiesen wurde – SLePort

+0

Ja Entschuldigung für Ungenauigkeiten kaufen danke! Merci-Unendlichkeit :)! –

Verwandte Themen