MUT: RegEx Lösche unterschiedliche Zeichen am Ende

German support forum

Moderators: white, Hacker, Stefan2

Post Reply
User avatar
praetor
Junior Member
Junior Member
Posts: 75
Joined: 2003-05-24, 13:46 UTC

MUT: RegEx Lösche unterschiedliche Zeichen am Ende

Post by *praetor »

Hallo,
ich hab mich in den regulären Ausdrücken verheddert und bräuchte mal Eure Unterstützung. Ich habe von Flickr Fotos runtergeladen, um korrupte lokale Kopien zu ersetzen. Flickr hängt an jeden Originaldateinamen
_irgendwelcheZiffern_o an.

So wird z.B. aus
sa310038.jpg
nach der Up- und Download bei Flicker
sa310038_22601314110_o.jpg

Wie kann ich die ursprünglichen Dateinamen wieder herstellen?
Grüße
praetor
User avatar
milo1012
Power Member
Power Member
Posts: 1158
Joined: 2012-02-02, 19:23 UTC

Post by *milo1012 »

Wenn im ursprünglichen Namen kein Unterstrich vorkommt, wäre folgendes eine Möglichkeit:

Suchen nach
([^_]+)_.*(\.[^\.]+)$

Ersetzen durch
$1$2

[x]RegEx


Wenn doch, dann müsste man wissen, ob die angehängte Zeichenkette immer die selbe Länge hat. Dann könnte man den Ausdruck auch wesentlich vereinfachen.


Update:
Wenn es tatsächlich nur Ziffern sind die angehängt werden, dann kann man es sich einfacher machen, und der Dateiname alle beliebigen Zeichen haben:

Suchen nach
(.+)_\d+_o(\.[^\.]+)$

Ersetzen durch
$1$2

[x]RegEx
TC plugins: PCREsearch and RegXtract
User avatar
praetor
Junior Member
Junior Member
Posts: 75
Joined: 2003-05-24, 13:46 UTC

Post by *praetor »

Vielen Dank zunächst mal!
milo1012 wrote:Wenn im ursprünglichen Namen kein Unterstrich vorkommt ...
Doch, kommt z.T. vor. Die ursprünglichen Namen lauten ganz unterschiedlich.
milo1012 wrote: dann müsste man wissen, ob die angehängte Zeichenkette immer die selbe Länge hat.
Das ist leider auch nicht gewährleistet.
milo1012 wrote: Wenn es tatsächlich nur Ziffern sind die angehängt werden, ...
Auch das ist leider nicht der Fall. Der angehängte String endet mit einem kleinen o.

M.E. müsste vom Ende des Dateinamens beginnend die Position des zweiten Unterstrichs ermittelt werden, um dann alles bis zu dieser Position abzuschneiden. Lässt sich das machen?
Grüße
praetor
User avatar
Stefan2
Power Member
Power Member
Posts: 4158
Joined: 2007-09-13, 22:20 UTC
Location: Europa

MUT: RegEx letzte zwei Unterstriche abschneiden

Post by *Stefan2 »

Gute Fragestellung, praetor, inklusive Vorher/Nachher-Beispiele :thumpsup:



VON:
sa310038_22601314110_o.jpg
sa_310_038_22601314110_o.jpg
sa_310_038_TEST_Datei_22601314110_o.jpg
ZU:
sa310038.jpg
sa_310_038.jpg
sa_310_038_TEST_Datei.jpg
praetor wrote:M.E. müsste vom Ende des Dateinamens beginnend die Position des zweiten Unterstrichs ermittelt werden, um dann alles bis zu dieser Position abzuschneiden. Lässt sich das machen?

Probiere es mal so:

Suche: (.+)_.+_.
Ersetze: $1
[X]RegEx




Erklärung:
(.+) >> suche gierig alles, bis
_.+_. >>[face=timesnewroman] zu einem Unterstrich, gefolgt von beliebig vielen Zeichen, gefolgt von einem Unterstrich, gefolgt von einem beliebigen Zeichen (hier dem 'o')[/face]



EDIT:
Es wundert mich schon, dass das zweite '.+' keine Unterstriche findet/berücksichtigt.
Aber das greedy des ersten '.+' ist wohl stärker.
Richtiger (und vermutlich schneller bei tausenden Dateien) wäre jedoch wohl trotdem  : '(.+)_[^_]+_.'



 
Last edited by Stefan2 on 2016-06-21, 12:22 UTC, edited 1 time in total.
User avatar
praetor
Junior Member
Junior Member
Posts: 75
Joined: 2003-05-24, 13:46 UTC

Re: MUT: RegEx letzte zwei Unterstriche abschneiden

Post by *praetor »

Stefan2 wrote:Suche: (.+)_.+_.
Ersetze: $1
[X]RegEx
Danke Stefan, funktioniert prima :)
Grüße
praetor
User avatar
milo1012
Power Member
Power Member
Posts: 1158
Joined: 2012-02-02, 19:23 UTC

Re: MUT: RegEx letzte zwei Unterstriche abschneiden

Post by *milo1012 »

2Stefan2
Warum den Ausdruck jetzt "zu" allgemeingültig machen?
Lass das kleine o doch zwangsweise drin, damit bei schon umbenannten Dateien das Ganze nicht mehr wirken kann. Das ist auch der Grund, warum ich an der Dateiendung geankert habe:
(.+)_[^_]+_o(\.[^\.]+)?$

$1$2
Stefan2 wrote:Aber das greedy des ersten '.+' ist wohl stärker.
Richtig, weil greedy.
TC plugins: PCREsearch and RegXtract
User avatar
Stefan2
Power Member
Power Member
Posts: 4158
Joined: 2007-09-13, 22:20 UTC
Location: Europa

Post by *Stefan2 »

Es ist zwar nicht wahrscheinlich, dass praetors' Dateien auf Unterstrich+1Zeichen enden,
und ob Flickr immer ein 'o' anhängt oder auch mal ein anderes Zeichen weiß man auch nicht,
aber wenn man darauf prüfen wollte, würde ich es folgendermaßen probieren:

Suche: (.+)_.+_o
Ersetze: $1
[_]Ext
[X]RegEx



Beziehungsweise:
(.+)_[^_]+_o
$1


VON:
sa310038_22601314110_o.jpg
sa310038_o_22601314110_o.jpg
sa_310_038_22601314110_o.jpg
sa_310_038_TEST_Datei_22601314110_o.jpg
sa_310_038_TEST_Datei_o_22601314110_o.jpg
ZU:
sa310038.jpg
sa310038_o.jpg
sa_310_038.jpg
sa_310_038_TEST_Datei.jpg
sa_310_038_TEST_Datei_o.jpg




 
sentry
Junior Member
Junior Member
Posts: 10
Joined: 2016-08-08, 09:11 UTC

Post by *sentry »

Nur mal so eine Idee:
Wenn die Dateinamen immer um die gleiche Anzahl Zeichen verlängert werden, kann man genau diese Anzahl Zeichen einfach mit dem Mehrfach-Umbenenn-Tool wieder löschen:

Zu ändernde Dateien markieren
STRG+M öffnet M.U. Tool

Wenn z.B. immer 14 Stellen angehängt wurden, schreibt man in die Umbenennmaske Dateiname: [N-259-15]
(mit Klammern und immer eine Stelle höher, als die zu entfernenden Zeichen.

In der Vorschau kann man prüfen, ob das Ergebnis passt...notfalls mehrmals in kleineren Schritten vorgehen.

Ganz unten "Start!" drücken, wenn alles passt.
Post Reply