Hromadne prejmenovani souboru-Regexp - backreference + cislo

Hlášení chyb a problémů programu Altap Salamander. Buďte, prosím, ve svých popisech co nejpodrobnější a vytvořte pro každý incident nový příspěvek. Nevkládejte programem generovaná hlášení o pádu programu, pošlete je e-mailem.
vbr

Hromadne prejmenovani souboru-Regexp - backreference + cislo

Post by vbr »

Zdravim,
chtel bych se zeptat, jestli je mozne v hromadnem prejmenovani souboru nahradit treba
IMG1234.JPG ...
za
IMG1_1234.JPG ... ?

Pouzitim regularniho vyrazu s nahrazenim:
(IMG)([0-9][0-9][0-9][0-9]\.JPG) // kvantifikator {4} nefunguje ?
$11_$2 // se pokusi nacist obsah jedenacte zavorky a nahlasi chybu
$1\1_$2 // zase primo vlozi nepripustne \

Nahrada za mirne odlisne $1_1_$2 je v poradku.

Prehledl jsem neco duleziteho v popisu funkci a syntaxe?
Diky.

Miroslav Novosad
Posts: 60
Joined: 04 Feb 2006, 13:14
Location: Ostrava

Re: Hromadne prejmenovani souboru

Post by Miroslav Novosad »

vbr wrote:v hromadnem prejmenovani souboru nahradit treba
IMG1234.JPG ...
za
IMG1_1234.JPG ... ?
A proč nepoužít Batch Rename -> Search for -> Replace with?

vbr

Re: Hromadne prejmenovani souboru

Post by vbr »

Miroslav Novosad wrote: A proč nepoužít Batch Rename -> Search for -> Replace with?
O to jsem se presne snazil, vyse uvedene pokusy jsou samozrejme prave z dialogu tohoto pluginu.
Problem byl s cislici nasledujici bezprostredne po cislovane zpetne referenci.

Jan Rysavy
ALTAP Staff
ALTAP Staff
Posts: 5197
Joined: 08 Dec 2005, 06:34
Location: Novy Bor, Czech Republic
Contact:

Post by Jan Rysavy »

Patrně chcete namnožit první číslici?

IMG(.)(.*)
IMG$1_$1$2

Ohledně {4} bohužel netušíme, co máte na mysli. Můžete to rozvést, případně vložit odkaz na specifikaci?

vbr
Posts: 9
Joined: 12 Nov 2006, 22:26

Post by vbr »

Jan Rysavy wrote:Patrně chcete namnožit první číslici?

IMG(.)(.*)
IMG$1_$1$2

Ohledně {4} bohužel netušíme, co máte na mysli. Můžete to rozvést, případně vložit odkaz na specifikaci?
Diky za odpoved,
nechtel jsem namnozit prvni cislici ale pridat prave cislici 1 za prvni cast nazvu:
IMG3456.JPG ... >> IMG1_3456.JPG
(Jde o pridani dalsi cifry po prekroceni 10000 polozek puvodniho cislovani.)

Problem je v tesnem sousedstvi cislovane backreference $1 a nasledujici cislovky/retezce "1", ktery bych chtel vlozit. (Poklada se pochopitelne za neexistujici $11 a escape \1 zase vlozi i zpetne lomitko.)

S timhle konkretnim pripadem se celkem snadno vyrovnam, proste jsem vlozil ono podtrzitko navic (kdybych hodne chtel, muzu ho v dalsim kroku nechat odstranit), spis mi slo o pouzitou syntax RE.

Co se tyka zapisu {4}, jedna se v me znamych dialektech regularnich vyrazu o kvantifikator urcujici kolikrat se ma vyskytovat predchozi element ; viz napr.:
http://www.regularnivyrazy.info/shrnuti-syntaxe.html
http://www.regular-expressions.info/repeat.html
http://docs.python.org/lib/re-syntax.html

tedy:
[0-9]{4} je ctyrmistne cislo
[0-9]{3,7} tri az sedmimistne cislo
Pravda ale je, ze o tomto neni zminka ani v prilozene napovede k syntaxi RE, takze to mozna neni podporovano v pouzite knihovne.
(jedna se jen o zjednoduseni zapisu, stejnou funkci ma proste zopakovani)
[0-9]{3,7} == [0-9][0-9][0-9][0-9]?[0-9]?[0-9]?[0-9]?

Jan Rysavy
ALTAP Staff
ALTAP Staff
Posts: 5197
Joined: 08 Dec 2005, 06:34
Location: Novy Bor, Czech Republic
Contact:

Post by Jan Rysavy »

vbr wrote:Diky za odpoved,
nechtel jsem namnozit prvni cislici ale pridat prave cislici 1 za prvni cast nazvu:
IMG3456.JPG ... >> IMG1_3456.JPG
(Jde o pridani dalsi cifry po prekroceni 10000 polozek puvodniho cislovani.)
V tom případě nepotřebujete regulární výrazy, stačí prosté Search&Replace, jak psal pan Novosad:

Search for: IMG
Replace with: IMG1_

Ohledně {4} mi říká kolega, že toto neimplementoval.

vbr
Posts: 9
Joined: 12 Nov 2006, 22:26

Post by vbr »

Jan Rysavy wrote:
Search for: IMG
Replace with: IMG1_

Ohledně {4} mi říká kolega, že toto neimplementoval.
Diky, v poradku, chtel jsem si jen ujasnit podporu jednotlivych konstrukci RE.
Regularni vyrazy potrebuju k nahrazeni prave jen neprecislovanych IMG3456.JPG ..., protoze v tech samych podadresarich jsou obcas i jiz drive precislovane IMG0_7890 ..., ktere chci samozrejme nechat v teto podobe (omlouvam se, ze jsem to nepripsal k uvodni informaci, je to docela dulezita okolnost).

Jak jsem ale psal drive, nemam s onim podtrzitkem navic zasadni problem, kazdopadne je to pohodlnejsi, nez delat "neregularni" nahrazeni po adresarich.
Hlavne uz ale vim, s jakou syntaxi a moznostmi pocitat, az budu potrebovat hromadne prejmenovani pro nejakou dalsi praci.

Jeste jednou diky.

Jan Rysavy
ALTAP Staff
ALTAP Staff
Posts: 5197
Joined: 08 Dec 2005, 06:34
Location: Novy Bor, Czech Republic
Contact:

Post by Jan Rysavy »

Pokud chcete z přejmenování vyloučit soubory "IMG0_*", zadejte do
Mask: |IMG0_*

Viz popis masek v dokumentaci: Help > Index > File Masks
nebo zde: http://forum.altap.cz/viewtopic.php?t=477

vbr
Posts: 9
Joined: 12 Nov 2006, 22:26

Post by vbr »

Diky, masky vypadaji taky docela zajimave, jeste se na ne podivam podrobneji.

Post Reply