/ Forside / Teknologi / Operativsystemer / Linux / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
Linux
#NavnPoint
o.v.n. 11177
peque 7911
dk 4814
e.c 2359
Uranus 1334
emesen 1334
stone47 1307
linuxrules 1214
Octon 1100
10  BjarneD 875
Rename-script
Fra : Jesper Poulsen


Dato : 15-01-08 17:34

Greetings!

Er her en venlig sjæl der kan hjælpe mig med et lidt specielt rename-script?

Jeg har en stak filer af typen filename.ext.x og de skal renames til
filename.x.ext - hvordan gør man lettest det?


--
Mvh
Jesper Poulsen

 
 
Allan Willems Joerge~ (15-01-2008)
Kommentar
Fra : Allan Willems Joerge~


Dato : 15-01-08 17:51

Jesper Poulsen <nospam@ingensteder.dk> wrote:

> Er her en venlig sjæl der kan hjælpe mig med et lidt specielt rename-script?
> Jeg har en stak filer af typen filename.ext.x og de skal renames til
> filename.x.ext - hvordan gør man lettest det?

Hvis du har en Debian-baseret distribution kan du kigge på rename(1)

--
Med venlig hilsen / Best regards
Allan Willems Joergensen

"Existance is not only temporary, its pointless." Calvin

Jesper Poulsen (15-01-2008)
Kommentar
Fra : Jesper Poulsen


Dato : 15-01-08 19:07

Allan Willems Joergensen wrote:

> Hvis du har en Debian-baseret distribution kan du kigge på rename(1)

Det synes jeg nu ikke at jeg blev meget klogere af.


--
Mvh
Jesper Poulsen

Allan Willems Joerge~ (16-01-2008)
Kommentar
Fra : Allan Willems Joerge~


Dato : 16-01-08 07:24

Jesper Poulsen <nospam@ingensteder.dk> wrote:

>> Hvis du har en Debian-baseret distribution kan du kigge på rename(1)
> Det synes jeg nu ikke at jeg blev meget klogere af.

Så må du jo forsøge at levere informationer der gør det muligt at
hjælpe.

--
Med venlig hilsen / Best regards
Allan Willems Joergensen

"Existance is not only temporary, its pointless." Calvin

Jesper Poulsen (16-01-2008)
Kommentar
Fra : Jesper Poulsen


Dato : 16-01-08 11:14

Allan Willems Joergensen wrote:

> Så må du jo forsøge at levere informationer der gør det muligt at
> hjælpe.

Søren og Kent har været ganske hjælpsomme i deres måde at svare på - jeg
fandt dog en anden løsning inden.


--
Mvh
Jesper Poulsen

Allan Willems Joerge~ (16-01-2008)
Kommentar
Fra : Allan Willems Joerge~


Dato : 16-01-08 12:45

Jesper Poulsen <nospam@ingensteder.dk> wrote:

>> Så må du jo forsøge at levere informationer der gør det muligt at
>> hjælpe.
> Søren og Kent har været ganske hjælpsomme i deres måde at svare på - jeg
> fandt dog en anden løsning inden.

Finder du deres svar mere brugbare fordi de gav dig en komplet løsning?

--
Med venlig hilsen / Best regards
Allan Willems Joergensen

"Existance is not only temporary, its pointless." Calvin

Jesper Poulsen (16-01-2008)
Kommentar
Fra : Jesper Poulsen


Dato : 16-01-08 20:58

Allan Willems Joergensen wrote:

> Finder du deres svar mere brugbare fordi de gav dig en komplet løsning?

Nej, jeg finder deres svar mere brugbare fordi de gav mig noget indsigt
i hvordan man kan anvende scripting.
Det var mere lærerigt.


--
Mvh
Jesper Poulsen

Allan Willems Joerge~ (17-01-2008)
Kommentar
Fra : Allan Willems Joerge~


Dato : 17-01-08 12:39

Jesper Poulsen <nospam@ingensteder.dk> wrote:

>> Finder du deres svar mere brugbare fordi de gav dig en komplet løsning?
> Nej, jeg finder deres svar mere brugbare fordi de gav mig noget indsigt
> i hvordan man kan anvende scripting.
> Det var mere lærerigt.

rename(1) er et godt værktøj som sparer meget tasteri. Prøv at kigge på
det.

--
Med venlig hilsen / Best regards
Allan Willems Joergensen

"Existance is not only temporary, its pointless." Calvin

Jesper Poulsen (17-01-2008)
Kommentar
Fra : Jesper Poulsen


Dato : 17-01-08 14:12

Allan Willems Joergensen wrote:

> rename(1) er et godt værktøj som sparer meget tasteri. Prøv at kigge på
> det.

Jeg _har_ kigget. Og jeg fandt det ikke særligt let tilgængeligt.


--
Mvh
Jesper Poulsen

Jesper Poulsen (15-01-2008)
Kommentar
Fra : Jesper Poulsen


Dato : 15-01-08 20:16

Jesper Poulsen wrote:

> Jeg har en stak filer af typen filename.ext.x og de skal renames til
> filename.x.ext - hvordan gør man lettest det?

Jeg fandt en anden løsning. Med pyRenamer slettede jeg ".ext" i
filnavnene og tilføjede derefter ".ext" i slutningen af filnavnene:

filename.ext.x -> filename.x -> filename.x.ext


--
Mvh
Jesper Poulsen

Søren Dideriksen (15-01-2008)
Kommentar
Fra : Søren Dideriksen


Dato : 15-01-08 23:09

Jesper Poulsen <nospam@ingensteder.dk> writes:

> Greetings!
>
> Er her en venlig sjæl der kan hjælpe mig med et lidt specielt rename-script?
>
> Jeg har en stak filer af typen filename.ext.x og de skal renames til
> filename.x.ext - hvordan gør man lettest det?

da jeg ikke ved om filename, ext, eller x er konstant, er jeg nødt til
at gå ud fra det generelle tilfælde.

hvis alle filer ligger i pwd. og de renamede filer skal ligge samme sted, vil
flg oneliner virke.

$ for x in `ls -1`; do a=`echo $x | awk -F. '{print $1}'`; b=`echo $x | awk -F. '{print $2}'`; c=`echo $x | awk -F. '{print $3}'`; mv $x $a.$c.$b; done


--
Søren Dideriksen

Kent Friis (15-01-2008)
Kommentar
Fra : Kent Friis


Dato : 15-01-08 23:12

Den Tue, 15 Jan 2008 23:08:54 +0100 skrev Søren Dideriksen:
> Jesper Poulsen <nospam@ingensteder.dk> writes:
>
>> Greetings!
>>
>> Er her en venlig sjæl der kan hjælpe mig med et lidt specielt rename-script?
>>
>> Jeg har en stak filer af typen filename.ext.x og de skal renames til
>> filename.x.ext - hvordan gør man lettest det?
>
> da jeg ikke ved om filename, ext, eller x er konstant, er jeg nødt til
> at gå ud fra det generelle tilfælde.
>
> hvis alle filer ligger i pwd. og de renamede filer skal ligge samme sted, vil
> flg oneliner virke.
>
> $ for x in `ls -1`; do a=`echo $x | awk -F. '{print $1}'`; b=`echo $x | awk -F. '{print $2}'`; c=`echo $x | awk -F. '{print $3}'`; mv $x $a.$c.$b; done

Jeg skulle mene den der kan reduceres kraftigt med:
awk -F. '{printf("%s.%s.%s\n",$1,$3,$2)}'

Mvh
Kent
--
"So there I was surrounded by all these scary creatures
They were even scarier than what Microsoft call features"
- C64Mafia: Forbidden Forest (Don't Go Walking Slow).

Søren Dideriksen (17-01-2008)
Kommentar
Fra : Søren Dideriksen


Dato : 17-01-08 13:48

Jesper Poulsen <nospam@ingensteder.dk> writes:

> Greetings!
>
> Er her en venlig sjæl der kan hjælpe mig med et lidt specielt rename-script?
>
> Jeg har en stak filer af typen filename.ext.x og de skal renames til
> filename.x.ext - hvordan gør man lettest det?

Hvis du er til zsh,
kan du gøre det ultrakort.

% autoload zmv
% zmv '(*).(*).(*)' '$1.$3.$2'

Den er da lidt lækker :)

--
Søren Dideriksen

Jesper Poulsen (17-01-2008)
Kommentar
Fra : Jesper Poulsen


Dato : 17-01-08 14:13

Søren Dideriksen wrote:

> Hvis du er til zsh,
> kan du gøre det ultrakort.
>
> % autoload zmv
> % zmv '(*).(*).(*)' '$1.$3.$2'
>
> Den er da lidt lækker :)

Bestemt. Tak for input


--
Mvh
Jesper Poulsen

Peter Makholm (17-01-2008)
Kommentar
Fra : Peter Makholm


Dato : 17-01-08 14:39

Jesper Poulsen <nospam@ingensteder.dk> writes:

> Allan Willems Joergensen wrote:
>
>> rename(1) er et godt værktøj som sparer meget tasteri. Prøv at kigge på
>> det.
>
> Jeg _har_ kigget. Og jeg fandt det ikke særligt let tilgængeligt.

Og det *er* en distribution i Debian-familien du bruger?

$ rename 's/\.ext\.x$/.x.ext/' *

Det første argument er et perl-udtryk, oftest bare en substitution som
i ovenstående. Her tager vil alle filnavne der slutter ($) med
'.ext.x' og omskriver denne slutning til '.x.ext'.

Desvære skal punktummer lige escapes i regulære udtryk.


Jeg finder Debian's rename[1] specielt effektiv når man skal lave mere
advancerede ændringer:

rename 'y/A-Z/a-z/;s/(\d+)/sprintf"%04d",$1/e' IMG*.JPG

laver store bogstaver om til små og formaterer lige nummeret med op
til 4 indledende nuller.


rename 's/\.ext$/sprintf"%04d.ext",$a++/e' *

indsætter et løbenummer ind før filendelsen.


rename 's/(?<!exe)$/.exe/ if -x $_' *

Sætter endelsen .exe på alle eksekverbare filer der ikke allerede
har denne endelse.


Pointen er bare at distributioner i famile med for eksempel Red Hat og
Suse bruger det rename-program der følger med util-linux pakken. Det
er et helt andet program og dette programs manualside har jeg vist
aldrig rigtigt forstået.


1) Egentlig bør det retteligt kaldes perl's rename-script.

//Makholm

Kent Friis (17-01-2008)
Kommentar
Fra : Kent Friis


Dato : 17-01-08 23:13

Den Thu, 17 Jan 2008 13:39:13 +0000 skrev Peter Makholm:
> Jesper Poulsen <nospam@ingensteder.dk> writes:
>
>> Allan Willems Joergensen wrote:
>>
>>> rename(1) er et godt værktøj som sparer meget tasteri. Prøv at kigge på
>>> det.
>>
>> Jeg _har_ kigget. Og jeg fandt det ikke særligt let tilgængeligt.
>
> Og det *er* en distribution i Debian-familien du bruger?
>
> $ rename 's/\.ext\.x$/.x.ext/' *
>
> Det første argument er et perl-udtryk, oftest bare en substitution som
> i ovenstående. Her tager vil alle filnavne der slutter ($) med
> '.ext.x' og omskriver denne slutning til '.x.ext'.

Som jeg forstod det var x (og muligvis også ext) variable dele af
filnavne.

Altså:

image.jpg.1 -> image.1.jpg
image.jpg.2 -> image.2.jpg
image.png.1 -> image.1.png

Mvh
Kent
--
"So there I was surrounded by all these scary creatures
They were even scarier than what Microsoft call features"
- C64Mafia: Forbidden Forest (Don't Go Walking Slow).

Jesper Poulsen (18-01-2008)
Kommentar
Fra : Jesper Poulsen


Dato : 18-01-08 00:42

Kent Friis wrote:

> Som jeg forstod det var x (og muligvis også ext) variable dele af
> filnavne.
>
> Altså:
>
> image.jpg.1 -> image.1.jpg
> image.jpg.2 -> image.2.jpg
> image.png.1 -> image.1.png

Præcis


--
Mvh
Jesper Poulsen

Peter Makholm (18-01-2008)
Kommentar
Fra : Peter Makholm


Dato : 18-01-08 08:00

Kent Friis <nospam@nospam.invalid> writes:

>> $ rename 's/\.ext\.x$/.x.ext/' *

[...]

> Som jeg forstod det var x (og muligvis også ext) variable dele af
> filnavne.

$ rename 's/\.([^.]+)\.([^.]+)$/.$2.$1/' *

Eller hvis man ved at x er et tal og ext kun består af bogstaver:

$ rename 's/\.(\w+)\.(\d+)$/.$2.$1/' *

Så vil filer der ikke ligner mønsteret heller ikke blive omdøbt til
noget vås.

Man kan godt nok bruge vilkårlige perludtryk, men man kommer langt med
en en basal viden om perl5-kompatible regulære udtryk, der anvendens
mange andre steder end i perl.

//Makholm

Søg
Reklame
Statistik
Spørgsmål : 177485
Tips : 31964
Nyheder : 719565
Indlæg : 6408407
Brugere : 218885

Månedens bedste
Årets bedste
Sidste års bedste