← Back to team overview

sslug-teknik team mailing list archive

Re: rename/copy

 

Anders Bo Rasmussen wrote:

> Findes der en rename-lignende kommando, der gør det samme som rename,
> man laver en kopi i stedet.
> 
> Så hvis man har filerne: a.test b.test c.test
> og kører: rename test tst *.test
> Så bliver der reelt kørt:
> 
> cp a.test a.tst
> cp b.test b.tst
> cp c.test c.tst

Det er en glimrende bash-one-liner. 

Vi har som eksempel 1.a, 2.a og 3.a.

Først en løkke der har fat i alle *.a filer:

$ for x in *.a; do echo $x; done;
1.a
2.a
3.a

dernæst vises navnene uden extension:
  
$ for x in *.a; do echo ${x%.a}; done
1
2
3

så sætter vi den nye endelse på:

$ for x in *.a; do echo ${x%.a}.b; done
1.b
2.b
3.b

og så kan vi køre en hvilken som helst kommando vi ønsker:

$ for x in *.a; do echo cp -v $x ${x%.a}.b; done
cp -v 1.a 1.b
cp -v 2.a 2.b
cp -v 3.a 3.b

Fjern "echo" fra sidste linie når du er sikker på at de rigtige kommandoer
bliver udført. (det smarte ved denne linie er at du kan gå fra backup til
rename bare ved at udskifte "cp" med "mv")

-- 
Mvh
Christian Iversen


Follow ups

References