Det har med enkelfnuttarna att göra. De gör så att variabelnamnet behålls istället för att ersättas med variabelns värde. Lösningen är att använda dubbelfnuttar istället, eller inga fnuttar alls beroende på situationen.Johnny Rosenberg skrev:Man kan tydligen inte bara slänga in ”$Test” och ”$Replace” hur som helst i ett reguljärt uttryck, så hur gör man då istället?
Massnamnbyte på filer i given mapp med undermappar [LÖST]
- Konservburk
- Inlägg: 5919
- Blev medlem: 07 apr 2007, 22:28
Re: Massnamnbyte på filer i given mapp med undermappar
- Johnny Rosenberg
- Inlägg: 1256
- Blev medlem: 23 jun 2007, 16:18
- OS: Ubuntu
- Utgåva: 22.10 Kinetic Kudu
- Kontakt:
Re: Massnamnbyte på filer i given mapp med undermappar
Okej, testade då med detta:Konservburk skrev:Det har med enkelfnuttarna att göra. De gör så att variabelnamnet behålls istället för att ersättas med variabelns värde. Lösningen är att använda dubbelfnuttar istället, eller inga fnuttar alls beroende på situationen.Johnny Rosenberg skrev:Man kan tydligen inte bara slänga in ”$Test” och ”$Replace” hur som helst i ett reguljärt uttryck, så hur gör man då istället?
Kod: Markera allt
x="hej"
y="Hej"
find "$MyPath" -type f \
-exec rename -n \
"s;([^a-zåäöA-ZÅÄÖ])$x([^a-zåäöA-ZÅÄÖ]);$1$y$2;g;" {} +
Min avsikt med ”([^a-zåäöA-ZÅÄÖ])” är att undvika att ord som ”shejk” konverteras till ”sHejk” och så vidare. Därför letar jag bara efter ord (namn i mitt fall) som föregås och efterföljs av ett tecken som är vad som helst utom en bokstav, och dessa tecken ska ju även inkluderas i resultatet.
Så vad fick dem att försvinna?
- Konservburk
- Inlägg: 5919
- Blev medlem: 07 apr 2007, 22:28
Re: Massnamnbyte på filer i given mapp med undermappar
Du måste escapea $1 och $2 om du inte vill att de ska ersättas av skalet. Det gör du enklast genom att sätta ett backlash framför dollartecknet så här: \$1
- Johnny Rosenberg
- Inlägg: 1256
- Blev medlem: 23 jun 2007, 16:18
- OS: Ubuntu
- Utgåva: 22.10 Kinetic Kudu
- Kontakt:
Re: Massnamnbyte på filer i given mapp med undermappar
Fint svenskt ord där, ”escapea”…Konservburk skrev:Du måste escapea $1 och $2 om du inte vill att de ska ersättas av skalet. Det gör du enklast genom att sätta ett backlash framför dollartecknet så här: \$1

Det funkade i alla fall, så nu kan jag nog ånyo markera tråden som löst…
Tack!
- Konservburk
- Inlägg: 5919
- Blev medlem: 07 apr 2007, 22:28
Re: Massnamnbyte på filer i given mapp med undermappar [LÖST
Det blev ju en fin övning i fnuttologi det här, även om svenskan blev lite lidande. 
