MUT: wie 6 Zeichen am Ende entfernen lassen?

German support forum

Moderators: Hacker, Stefan2, white

Post Reply
Andreas
Power Member
Power Member
Posts: 861
Joined: 2003-08-30, 08:45 UTC
Location: Hannover

MUT: wie 6 Zeichen am Ende entfernen lassen?

Post by *Andreas »

Dateinamen von hinten kürzen Mehrfach-Umbenenn-Tool

Hallo,

Mehere Dateinamen sind unterschiedlich lang.
Es sollen nun immer die letzten 6 Zeichen entfernt werden.
Wie bekomme ich das hin?
Gruß Andreas

Win10 x64 +++ Total Commander 10 +++ Directory Opus 12 +++
jb3363
Junior Member
Junior Member
Posts: 8
Joined: 2003-12-06, 13:26 UTC
Location: Arnsberg

Post by *jb3363 »

Habe ich auch mal gebraucht, und hier ist mir auch geholfen worden.

Also: RegEx an
Suchen nach: .{6}(.{6})$
Ersetzen durch: $1

JB.
User avatar
CSe
Senior Member
Senior Member
Posts: 233
Joined: 2003-04-07, 08:28 UTC
Location: Deutschland, NRW

Post by *CSe »

jb3363 wrote:Suchen nach: .{6}(.{6})$
Ersetzen durch: $1
Die Idee ist an sich richtig, aber mit diesem Ausdruck lieferst Du genau die letzten 6 Zeichen. Andreas wollte die letzten 6 Zeichen entfernen, was mit folgender Variante gelingt:

Suchen nach: (.*).{6}\.(.*)$
Ersetzen durch: $1.$2

Evtl. müßte da noch in die zweite Klammer ein Modifier, damit der Stern nicht greedy ist, falls Du Punkte im Dateinamen hast. Aber prinzipiell sollte das nun funktionieren.
Wenn Du nur Dateien mit einer Endung .ext hast, kannst Du auch mit folgendem Ausdruck auf Nummer Sicher gehen (bei regulären Ausdrücken weiß man nie, was man damit anstellt, wenn man sie nicht gewohnt ist):

Suchen nach: (.*).{6}(\.ext)$
Ersetzen durch: $1$2
Viele Grüße

Christian
User avatar
Hacker
Moderator
Moderator
Posts: 13142
Joined: 2003-02-06, 14:56 UTC
Location: Bratislava, Slovakia

Post by *Hacker »

Oder auch einfacher per [N-259-7].

HTH
Roman
Mal angenommen, du drückst Strg+F, wählst die FTP-Verbindung (mit gespeichertem Passwort), klickst aber nicht auf Verbinden, sondern fällst tot um.
jb3363
Junior Member
Junior Member
Posts: 8
Joined: 2003-12-06, 13:26 UTC
Location: Arnsberg

Post by *jb3363 »

Stimmt, ich habe eine Zahl verwechselt.

Suchen nach: .{6}(.{4})$
Ersetzen durch: $1

Funktioniert natürlich nur bei Endungen mit Punkt und 3 Buchstaben, also ".txt".

JB
Andreas
Power Member
Power Member
Posts: 861
Joined: 2003-08-30, 08:45 UTC
Location: Hannover

Post by *Andreas »

Hallo,

ganz lieben Dank für die Hilfe! :):):)
Ich muss das jetzt erst mal abarbeiten ;)
Gruß Andreas

Win10 x64 +++ Total Commander 10 +++ Directory Opus 12 +++
User avatar
CSe
Senior Member
Senior Member
Posts: 233
Joined: 2003-04-07, 08:28 UTC
Location: Deutschland, NRW

Post by *CSe »

jb3363 wrote:Suchen nach: .{6}(.{4})$
Ersetzen durch: $1

Funktioniert natürlich nur bei Endungen mit Punkt und 3 Buchstaben, also ".txt".
Eigentlich dachte ich immer, ich hätte verstanden, wie reguläre Ausdrücke funktionieren. Aber obiges Beispiel produziert im MUT etwas anderes, als ich erwartet habe. :? Kann mir mal bitte einer klären, weshalb mit diesem Ausdruck trotzdem das richtige Ergebnis herauskommt? :?:

".{6}" heißt "6 beliebige Zeichen".
"(.{4})$" heißt "4 beliebige Zeichen am Ende der Zeichenkette" (@jb3363: aber nicht nur Buchstaben:!:)
"Ersetzen durch $1" heißt für mich, daß die Backreference $1 durch den Text, der vom in der ersten Klammer definierten Ausdruck gefunden wird, ersetzt wird, was im obigen Fall die letzten 4 Zeichen der Zeichenkette wären.

Nach genau diesem Verständnis habe ich meinen Ausdruck

Code: Select all

Suchen nach: (.*).{6}\.(.*)$ 
Ersetzen durch: $1.$2
aufgebaut, der sich so verhält, wie ich es erwarte bzw. gelernt habe.

Wieso funktioniert .{6}(.{4})$, wenn man $1 ersetzen läßt? :roll: :(
Viele Grüße

Christian
sapiens
Junior Member
Junior Member
Posts: 92
Joined: 2003-03-22, 12:21 UTC
Location: Aachen, Germany

Post by *sapiens »

CSe wrote:Wieso funktioniert .{6}(.{4})$, wenn man $1 ersetzen läßt? :roll: :(
du sagst doch selbst: das, was in den ersten (runden) Klammern steht, wird durch $1 ersetzt.
User avatar
CSe
Senior Member
Senior Member
Posts: 233
Joined: 2003-04-07, 08:28 UTC
Location: Deutschland, NRW

Post by *CSe »

sapiens wrote:
CSe wrote:Wieso funktioniert .{6}(.{4})$, wenn man $1 ersetzen läßt? :roll: :(
du sagst doch selbst: das, was in den ersten (runden) Klammern steht, wird durch $1 ersetzt.
In der ersten runden Klammer steht (.{4}), was meiner Meinung nach nur noch die Endung übrig lassen sollte.
Viele Grüße

Christian
User avatar
nevidimka
Senior Member
Senior Member
Posts: 385
Joined: 2004-06-20, 21:38 UTC

Post by *nevidimka »

In der ersten runden Klammer steht (.{4}), was meiner Meinung nach nur noch die Endung übrig lassen sollte.
Korrekt. Jedoch nicht (wie von Dir offensichtlich erwartet) vom gesamten Dateinamen, sondern nur vom Muster der RegEx und dies sind in dem Fall nur die letzten 6 Zeichen + 4 Zeichen Erweiterung. Es ist somit korrekt (solange man eine Erweiterung mit 3 Zeichen als zwingend ansieht).
The doorstep to the temple of wisdom is a knowledge of our own ignorance. Benjamin Franklin
User avatar
CSe
Senior Member
Senior Member
Posts: 233
Joined: 2003-04-07, 08:28 UTC
Location: Deutschland, NRW

Post by *CSe »

Ich blick's trotzdem nicht.

Es wäre nett, wenn sich mal einer der Senior Members hierzu äußern könnte.

Zumal in der Hilfe:
Teilausdrücke für Suchen und Ersetzen

Textteile in Klammern gelten als Teilausdrücke.
Beispiel: Wenn man in einer MP3-Datei Titel und Interpret vertauschen will, die durch einen Bindestrich und zwei Leerzeichen getrennt sind (Titel - Interpret.mp3), so kann man das so lösen:
Suchen nach: (.*) - (.*)\.mp3
Ersetzen durch: $2 - $1.mp3
Dabei steht $1 für den Text in der ersten Klammer, $2 für den in der 2. Klammer.
steht. *Darum* versteh ich's nicht.
Viele Grüße

Christian
User avatar
nevidimka
Senior Member
Senior Member
Posts: 385
Joined: 2004-06-20, 21:38 UTC

Post by *nevidimka »

Es wäre nett, wenn sich mal einer der Senior Members hierzu äußern könnte.
Bin zwar keiner, nehme mir trotzdem die Freiheit heraus zu antworten. :D :P

Alles ganz einfach (wenn man es erst mal verstanden hat ;))
Beispiel: Dateiname
ABCDEFGH.ACC
RegEx: .{6}(.{4})$
referenziert jetzt folgenden Teil (fett)
ABCDEFGH.ACC
RegEx: (.{4})
referenziert folgenden Teil (fett)
ABCDEFGH.ACC
also wird bei Suchen und Ersetzen durch $1 dann
AB.ACC
Der Teil AB bleibt einfach stehen, da er durch die 1. RegEx gar nicht mit einbezogen wird. Der Teil .ACC wird durch die Klammer und $1 hinzugefügt.

Vielleicht wird es auch verständlicher, wenn die 1. RegEx .{6}(.{4})$ durch NICHTS ersetzt wird, dann bleibt nämlich nur ein AB stehen.

Alles klar? :D :P
The doorstep to the temple of wisdom is a knowledge of our own ignorance. Benjamin Franklin
User avatar
CSe
Senior Member
Senior Member
Posts: 233
Joined: 2003-04-07, 08:28 UTC
Location: Deutschland, NRW

Post by *CSe »

nevidimka wrote:
Es wäre nett, wenn sich mal einer der Senior Members hierzu äußern könnte.
Bin zwar keiner, nehme mir trotzdem die Freiheit heraus zu antworten. :D :P
Klar, kein Problem.
nevidimka wrote:Der Teil AB bleibt einfach stehen, da er durch die 1. RegEx gar nicht mit einbezogen wird. Der Teil .ACC wird durch die Klammer und $1 hinzugefügt.

Vielleicht wird es auch verständlicher, wenn die 1. RegEx .{6}(.{4})$ durch NICHTS ersetzt wird, dann bleibt nämlich nur ein AB stehen.

Alles klar? :D :P
Ah, jetzt, ja! Nach dieser Aussage schon. Da ich bisher reguläre Ausdrücke unter Linux und/oder Perl verwendet habe, habe ich an die Kombination mit dem MUT nicht gedacht!

Wunderbar, wieder etwas gelernt! :) *freu*

Danke schön. So im Nachinein: Natürlich! *patsch* Muß ja so sein... Puh, hab ich also bei den Ausdrücken doch nix falsch verstanden, sondern nur die Reaktion des TC nicht bedacht. *aufatem*
Viele Grüße

Christian
User avatar
Sheepdog
Power Member
Power Member
Posts: 5150
Joined: 2003-12-18, 21:44 UTC
Location: Berlin, Germany
Contact:

Post by *Sheepdog »

nevidimka wrote:Bin zwar keiner, nehme mir trotzdem die Freiheit heraus zu antworten. Very Happy Razz
Stell Dein Licht doch nicht unter den Scheffel ;) :lol:

sheepdog
"A common mistake that people make when trying to design something
completely foolproof is to underestimate the ingenuity of complete fools."
Douglas Adams
Post Reply