|
| 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.
>
| |
|
|