Batch-Dateien, die mit der Verschiebung des Dateinamens umbenannt werden

7

Ich habe eine Menge Dateien mit diesem Namen : [name]_[phonenumber]_HH-mm-ss_dd-MM-yyyy.mp3. Wie kann ich verschieben [name]und [phonenumber]bis zum Ende des Dateinamen, und setzen Sie das Datum am Anfang in Form von yyyy-MM-dd_HH-mm-ssso bekomme ich yyyy-MM-dd_HH-mm-ss_[name]_[phonenumber]?

Hier ist ein tatsächlicher Dateiname: [Unknown]_[+74999519075]_18-01-36_17-01-2014.mp3

Ich habe es versucht rename, aber aufgrund mangelnder Regexp-Kenntnisse habe ich keine funktionierende Lösung gefunden.

Firun
quelle
Können Sie uns einige aktuelle Beispiele geben?
Oli
Ja, hier ist ein aktueller Dateiname: [Unbekannt] _ [+ 74999519075] _18-01-36_17-01-2014.mp3
Firun

Antworten:

7

Das sollte funktionieren:

for i in *mp3; do rename 's/(.+?)_(.+?)_(.+?)-(.+?)-(.+?)_(.+?)-(.+?)-(.+?).mp3/$8-$7-$6_$3-$4-$5_$1_$2.mp3/' "$i"; done

Die Klammern erfassen Muster. Das erste erfasste Match ist $1das 2. $2usw. Der obige Befehl lautet also:

  • werde bis zum ersten nach allem suchen _
  • .+?bedeutet Übereinstimmung mit dem kürzestmöglichen Muster aufgrund der ?,
  • dann alles bis zum 2. _etc.
  • und benennt entsprechend um.

Ich habe es getestet mit:

$ touch [name]_[phonenumber]_HH-mm-ss_dd-MM-yyyy.mp3
$ ls
[name]_[phonenumber]_HH-mm-ss_dd-MM-yyyy.mp3
$ for i in *mp3; do rename 's/(.+?)_(.+?)_(.+?)-(.+?)-(.+?)_(.+?)-(.+?)-(.+?).mp3/$8-$7-$6_$3-$4-$5_$1_$2.mp3/' "$i"; done
$ ls
yyyy-MM-dd_HH-mm-ss_[name]_[phonenumber].mp3
Terdon
quelle
7

Wenn wir nur anhand Ihres Beispiels den Unterstrich als reservierten Begrenzer behandeln, können Sie ihn wie folgt umbenennen:

rename 's/^([^_]+)_([^_]+)_([^_]+)_(\d+)-(\d+)-(\d+)/$6-$5-$4_$3_$1_$2/' *.mp3 -vn

Das -vnam Ende bedeutet, dass es Ihnen nur sagt , was es in der realen Welt tun würde. Entfernen Sie das, damit es läuft.


Hier ist mein Testgeschirr anhand Ihres Beispiels:

$ rename 's/^([^_]+)_([^_]+)_([^_]+)_(\d+)-(\d+)-(\d+)/$6-$5-$4_$3_$1_$2/' *.mp3 -vn
[Unknown]_[+74999519075]_18-01-36_17-01-2014.mp3 renamed as 2014-01-17_18-01-36_[Unknown]_[+74999519075].mp3
Oli
quelle