/ 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 af mange filer
Fra : Andreas Haugstrup Pe~


Dato : 15-03-02 18:46

En hurtig nem en..

Jeg har en bunke filer der ser sådan ud:
TN_1060.JPG
TN_1061.JPG

og så videre. Dem vil jeg gerne have omdøbt i et hug allesammen til noget
der ligner:

1060.jpg
1061.jpg

og så videre. Kan jeg gøre det ved hjælp af en * kommando eller skal jeg
have gang i en simpel reg. exp? I så fald hvordan ser den kommando ud jag
skal bruge?

Filerne ligger alle i det samme bibliotek.

--
Andreas
http://www.solitude.dk

 
 
Adam Sjøgren (15-03-2002)
Kommentar
Fra : Adam Sjøgren


Dato : 15-03-02 19:16

On Fri, 15 Mar 2002 17:45:34 +0000 (UTC), Andreas Haugstrup Pedersen wrote:

> En hurtig nem en.. Jeg har en bunke filer der ser sådan ud:
> TN_1060.JPG TN_1061.JPG

> og så videre. Dem vil jeg gerne have omdøbt i et hug allesammen til
> noget der ligner:

> 1060.jpg 1061.jpg

I bash kan du f.ex. gøre sådan hér:

$ for file in `ls TN_*.JPG`; do mv -i $file ${file/TN_}; done

Hov, jeg overså i første omgang at du vil have .JPG lavet om til
..jpg. Hmm. Jeg er doven, så jeg tilføjer bare en linie til (og dermed
snyder jeg mht. "i et hug"):

$ for file in `ls *.JPG`; do mv -i $file ${file/.JPG/.jpg}; done


Mvh.

--
"Super heroes wear snow pants?" Adam Sjøgren
"When there's snow out, they do!" asjo@koldfront.dk

Klaus Alexander Seis~ (15-03-2002)
Kommentar
Fra : Klaus Alexander Seis~


Dato : 15-03-02 19:51

Adam Sjøgren skrev:

> $ for file in `ls TN_*.JPG`; do [...]
> $ for file in `ls *.JPG`; do [...]

Det er ikke decideret forkert at bruge ls til at finde filnavnene,
men fuldstændigt unødvendigt, idet shellen globber for en. Jeg ville
foretrække at nøjes med fx

$ for file in *.JPG; do [...]


// Klaus

--
><>    vandag, môre, altyd saam

Adam Sjøgren (15-03-2002)
Kommentar
Fra : Adam Sjøgren


Dato : 15-03-02 20:05

On Fri, 15 Mar 2002 19:51:08 +0100, Klaus Alexander Seistrup wrote:

> Det er ikke decideret forkert at bruge ls til at finde filnavnene,
> men fuldstændigt unødvendigt, idet shellen globber for en.

Jeg er medlem af Foreningen For Unødvendigt Brug Af ls.

Måske stammer vildfarelsen fra gange hvor jeg har brugt noget i stil
med in `ls *.bllala | grep jjaja` ...

Jeg overvejede at lave en udgave med find (evt. også xargs) (så
antallet af filer er fuldstændigt ligegyldigt), men jeg er for doven
til at gide at lære de mere intrikate detaljer.


,

--
"Super heroes wear snow pants?" Adam Sjøgren
"When there's snow out, they do!" asjo@koldfront.dk

Klaus Alexander Seis~ (15-03-2002)
Kommentar
Fra : Klaus Alexander Seis~


Dato : 15-03-02 20:55

Adam Sjøgren skrev:

> Jeg er medlem af Foreningen For Unødvendigt Brug Af ls.

Så længe du holder cat(1) udenfor, går det nok.

> Måske stammer vildfarelsen fra gange hvor jeg har brugt noget i
> stil med in `ls *.bllala | grep jjaja` ...

Det kunne man godt forestille sig.


// Klaus

--
><>    vandag, môre, altyd saam

Andreas Haugstrup Pe~ (15-03-2002)
Kommentar
Fra : Andreas Haugstrup Pe~


Dato : 15-03-02 21:15

asjo@koldfront.dk (Adam Sjøgren) wrote in
news:87ofhp66kb.fsf@virgil.koldfront.dk:

> $ for file in `ls TN_*.JPG`; do mv -i $file ${file/TN_}; done

Det er lidt flovt det her, men jeg ved ikke hvordan jeg får lavet et $. Jeg
arbejder på universitetets server via ssh og når jeg trykker alt gr + 4 sker
der intet.

--
Andreas
http://www.solitude.dk

Adam Sjøgren (15-03-2002)
Kommentar
Fra : Adam Sjøgren


Dato : 15-03-02 21:17

On Fri, 15 Mar 2002 20:15:04 +0000 (UTC), Andreas Haugstrup Pedersen wrote:

> asjo@koldfront.dk (Adam Sjøgren) wrote in
> news:87ofhp66kb.fsf@virgil.koldfront.dk:

>> $ for file in `ls TN_*.JPG`; do mv -i $file ${file/TN_}; done

> Det er lidt flovt det her, men jeg ved ikke hvordan jeg får lavet et
> $. Jeg arbejder på universitetets server via ssh og når jeg trykker
> alt gr + 4 sker der intet.

Det bliver flovere endnu: Du skal ikke skrive dollar-tegnet, det er
prompten.


Mvh.

--
"Super heroes wear snow pants?" Adam Sjøgren
"When there's snow out, they do!" asjo@koldfront.dk

Alex Holst (15-03-2002)
Kommentar
Fra : Alex Holst


Dato : 15-03-02 21:57

Adam Sjøgren <asjo@koldfront.dk> wrote:
> On Fri, 15 Mar 2002 20:15:04 +0000 (UTC), Andreas Haugstrup Pedersen wrote:
>>> $ for file in `ls TN_*.JPG`; do mv -i $file ${file/TN_}; done
^ ^ ^
>> Det er lidt flovt det her, men jeg ved ikke hvordan jeg får lavet et
>> $. Jeg arbejder på universitetets server via ssh og når jeg trykker
>> alt gr + 4 sker der intet.
>
> Det bliver flovere endnu: Du skal ikke skrive dollar-tegnet, det er
> prompten.

There can be only one? Naanej, forkert film.

--
I prefer the dark of the night, after midnight and before four-thirty,
when it's more bare, more hollow. http://a.area51.dk/


Adam Sjøgren (15-03-2002)
Kommentar
Fra : Adam Sjøgren


Dato : 15-03-02 22:11

On Fri, 15 Mar 2002 21:57:00 +0100, Alex Holst wrote:

> There can be only one? Naanej, forkert film.

<*griiiin*> Ååååh, jeg er ved at blive senil.

Nåh, anyhow, tricket er at bruge musen til at kopiere det ind med.

.... eller at tampe i tastaturet indtil det rigtige tegn fremkommer.

$ ascii dollar
ASCII 2/4 is decimal 036, hex 24, octal 044, bits 00100100: prints as `$'
Official name: Currency Sign
Other names: Dollar, Buck, Cash, Ding

,

--
"Super heroes wear snow pants?" Adam Sjøgren
"When there's snow out, they do!" asjo@koldfront.dk

Andreas Haugstrup Pe~ (15-03-2002)
Kommentar
Fra : Andreas Haugstrup Pe~


Dato : 15-03-02 22:22

asjo@koldfront.dk (Adam Sjøgren) wrote in
news:87n0x935au.fsf@virgil.koldfront.dk:

> Nåh, anyhow, tricket er at bruge musen til at kopiere det ind med.

Det virker, men jeg får fejlen

bash: ${file/TN_}: bad substitution


--
Andreas
http://www.solitude.dk

Adam Sjøgren (15-03-2002)
Kommentar
Fra : Adam Sjøgren


Dato : 15-03-02 22:36

On Fri, 15 Mar 2002 21:22:06 +0000 (UTC), Andreas Haugstrup Pedersen wrote:

>> Nåh, anyhow, tricket er at bruge musen til at kopiere det ind med.

> Det virker, men jeg får fejlen

> bash: ${file/TN_}: bad substitution

Det gør jeg ikke. Den version af bash jeg bruger:

virgil$ bash --version
GNU bash, version 2.05a.0(1)-release (i386-pc-linux-gnu)
Copyright 2001 Free Software Foundation, Inc.
virgil$

Gør det evt. nogen forskel hvis du prøver ${file/TN\_/} ? (Virker også
hér).


Mvh.

--
"Super heroes wear snow pants?" Adam Sjøgren
"When there's snow out, they do!" asjo@koldfront.dk

Andreas Haugstrup Pe~ (15-03-2002)
Kommentar
Fra : Andreas Haugstrup Pe~


Dato : 15-03-02 22:53

asjo@koldfront.dk (Adam Sjøgren) wrote in
news:87elil345a.fsf@virgil.koldfront.dk:

> Det gør jeg ikke. Den version af bash jeg bruger:

Hvordan finder jeg version? Jeg ved kun at det er en Sun Solaris server (tror
jeg)

> Gør det evt. nogen forskel hvis du prøver ${file/TN\_/} ? (Virker også
> hér).

Niks, samme fejl :(
--
Andreas
http://www.solitude.dk

Adam Sjøgren (15-03-2002)
Kommentar
Fra : Adam Sjøgren


Dato : 15-03-02 23:00

On Fri, 15 Mar 2002 21:52:42 +0000 (UTC), Andreas Haugstrup Pedersen wrote:

> asjo@koldfront.dk (Adam Sjøgren) wrote in
> news:87elil345a.fsf@virgil.koldfront.dk:

>> Det gør jeg ikke. Den version af bash jeg bruger:

> Hvordan finder jeg version?

Mon ikke det er nemmere at bruge noget andet en bash til at rename med
end det er at oversætte en ny bash?

(Svar på spørgsmålet: http://www.gnu.org/software/bash/bash.html#downloading)


Mvh.

--
"Super heroes wear snow pants?" Adam Sjøgren
"When there's snow out, they do!" asjo@koldfront.dk

Claus Rasmussen (15-03-2002)
Kommentar
Fra : Claus Rasmussen


Dato : 15-03-02 23:00

Andreas Haugstrup Pedersen wrote:

> En hurtig nem en..
>
> Jeg har en bunke filer der ser sådan ud:
> TN_1060.JPG
> TN_1061.JPG
>
> og så videre. Dem vil jeg gerne have omdøbt i et hug allesammen til noget
> der ligner:
>
> 1060.jpg
> 1061.jpg

Jeg har et lille script, der gør det. Det hedder rn (rename):

--------------------------------------------------------------
# Name
# rn - Rename files
#
# Synopsis
# rn <sed from pattern> <sed to pattern> <files>

from="$1"
to="$2"

shift 2

for old_name in "$@"
do new_name=$(echo -n "$old_name" | sed "s/$from/$to/")
if [ "$new_name" != "$old_name" ]
then mv "$old_name" "$new_name"
fi
done
--------------------------------------------------------------

(siden du åbenbart har knas med dollartegnet, kan du cut-n-paste
i stedet).

Du bruger det således:

rn TN_ '' *.JPG
rn JPG jpg *.JPG

Det har altid undret mig, at der ikke findes et tilsvarende program
som standard i linux/unix.

-Claus




>
> og så videre. Kan jeg gøre det ved hjælp af en * kommando eller skal jeg
> have gang i en simpel reg. exp? I så fald hvordan ser den kommando ud jag
> skal bruge?
>
> Filerne ligger alle i det samme bibliotek.
>


Søg
Reklame
Statistik
Spørgsmål : 177557
Tips : 31968
Nyheder : 719565
Indlæg : 6408879
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste