String vor "-" abscheiden.

Hi!

Ich würde gerne mit einem regex und dem dazu passenden script in Dateinamen nach dem Schema

“Dokument - Finanzen - 12. Februar 2017.pdf”

das Datum inklusive dem letzten Bindestrich abschneiden.
Natürlich kann das Datum variabel sein, was ein abschneiden nach Länge unmöglich macht.

Nach dem ersten Bindestrich abschneiden ist einfach, aber wie schneide ich nach dem letzten ab? Ich experimentiere seit Tagen mit regex, bekomme es aber einfach nicht hin.

Hat da jemand einen Tip? Eventuell gibt es ja auch eine ganz andere Lösung an die ich im Moment nicht denke.

Danke Euch!

Gruß

Michèl

Hier ist ein Perl Script das die Dateien umbenennt. Aber Vorsicht, wenn mehrere Dateien den gleichen Namen bis zum letzten Strich haben, dann gehen alle bis auf die letzte Datei verloren.

$ touch "Dokument - Finanzen - 12. Februar 2017.pdf"
$ touch "Dokument - Urlaub - 12. Februar 2017.pdf"
$ ls -1
Dokument - Finanzen - 12. Februar 2017.pdf
Dokument - Urlaub - 12. Februar 2017.pdf
$ perl -e 'for (@ARGV) { rename($_,"$1$2") if /(.*\S)\s*-.*(\..+)/ }' *
$ ls -1
Dokument - Finanzen.pdf
Dokument - Urlaub.pdf

Diese Regex schneidet auch alle Leerzeichen vor dem letzten “-” ab; ich nehme mal an das ist gewünscht.

Die erste Klammer sammelt alle Zeichen bis zum letzten nicht-Leerzeichen vor dem “-” ein. Dann werden 0 oder mehr Leerzeichen, gefolgt von “-” und dann beliebig vielen anderen Zeichen, bis ausschliesslich dem letzten Punkt ignoriert.

Die zweite Klammer sammelt dann den letzten Punkt und alle folgenden Zeichen ein.

Der Stern am Ende des Zeile wird von der Shell in eine Liste aller Dateinamen im aktuellen Verzeichnis erweitert.

Hi!

Danke für Deine mühe. Vielleicht ist die Frage doof, aber wie führe ich Perl in DT aus? Ich habe bisher nur mit Apple Script gearbeitet.