/ 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
Fjerne de første 5 karakterer i et filnavn~
Fra : Kasper Lund


Dato : 22-07-05 07:00

Hej ng.

Hvordan klarer jeg subj. på an masse filer i samme folder?

Altså, jeg har 50 filer i en mappe der alle skal have fjernet de føste
fem karakterer i filnavnet.

På forhånd tak for hjælpen.

/Kasper

 
 
Jesper Krogh (22-07-2005)
Kommentar
Fra : Jesper Krogh


Dato : 22-07-05 07:10

I dk.edb.system.unix, skrev Kasper Lund:
> Hvordan klarer jeg subj. på an masse filer i samme folder?
> Altså, jeg har 50 filer i en mappe der alle skal have fjernet de føste
> fem karakterer i filnavnet.

Du mener garanteret "tegn".


> På forhånd tak for hjælpen.

Jeg kommer da genre med morgenens (forhåbentligt ikke simpleste) bud:

$ for i in $(ls); do new=$(echo $i | perl -ane 's/^.{5}(.*)$/$1/;
print'); mv $i $new; done

Semi-testet, men 100% på eget ansvar.

Jesper
--
../Jesper Krogh, jesper@krogh.cc, Jabber ID: jesper@jabbernet.dk


Kasper Lund (22-07-2005)
Kommentar
Fra : Kasper Lund


Dato : 22-07-05 07:57

On Fri, 22 Jul 2005 06:10:28 +0000, Jesper Krogh wrote:

> I dk.edb.system.unix, skrev Kasper Lund:
>> Hvordan klarer jeg subj. på an masse filer i samme folder?
>> Altså, jeg har 50 filer i en mappe der alle skal have fjernet de føste
>> fem karakterer i filnavnet.
>
> Du mener garanteret "tegn".

Ja, det er lige det jeg mener..

>
>
>> På forhånd tak for hjælpen.
>
> Jeg kommer da genre med morgenens (forhåbentligt ikke simpleste) bud:
>
> $ for i in $(ls); do new=$(echo $i | perl -ane 's/^.{5}(.*)$/$1/;
> print'); mv $i $new; done

Jeg ser lige om der ikke skulle komme en lidt mere simpel løsning i
løbet af dagen, men tak for hjælpen

>
> Semi-testet, men 100% på eget ansvar.
>
> Jesper


Kent Friis (22-07-2005)
Kommentar
Fra : Kent Friis


Dato : 22-07-05 18:46

Den Fri, 22 Jul 2005 08:57:09 +0200 skrev Kasper Lund:
> On Fri, 22 Jul 2005 06:10:28 +0000, Jesper Krogh wrote:
>
>> I dk.edb.system.unix, skrev Kasper Lund:
>>> Hvordan klarer jeg subj. på an masse filer i samme folder?
>>> Altså, jeg har 50 filer i en mappe der alle skal have fjernet de føste
>>> fem karakterer i filnavnet.
>>
>> Du mener garanteret "tegn".
>
> Ja, det er lige det jeg mener..

Ahrrr sg* da også, nu havde jeg ellers næsten den helt rigtige regexp...
((00)|(03)|[56789]|(10)|(11)|(13)){5}

Mvh
Kent
--
Hard work may pay off in the long run, but lazyness pays off right now.

Henrik Christian Gro~ (22-07-2005)
Kommentar
Fra : Henrik Christian Gro~


Dato : 22-07-05 08:14

Jesper Krogh <jesper@krogh.cc> writes:

> I dk.edb.system.unix, skrev Kasper Lund:
>> Hvordan klarer jeg subj. på an masse filer i samme folder?
>> Altså, jeg har 50 filer i en mappe der alle skal have fjernet de føste
>> fem karakterer i filnavnet.
>
> Du mener garanteret "tegn".
>
>
>> På forhånd tak for hjælpen.
>
> Jeg kommer da genre med morgenens (forhåbentligt ikke simpleste) bud:
>
> $ for i in $(ls); do new=$(echo $i | perl -ane 's/^.{5}(.*)$/$1/;
> print'); mv $i $new; done

"Useless use of ls" (udskift "$(ls)" med "*")

Hvis du har perl-udgaven af rename (det har du f.eks. hvis du kører
Debian):
rename 's/^.....//' *

Jeg gjorde noget lignende (men jeg kendte de første tegn, så jeg angav
dem i stedet for .'er) i går aftes på en masse af mine egne filer.

Hvis du ikke har perl-rename kan mmv sikkert klare det. Det er længe
siden jeg har brugt den, men det er nok noget i retning af:
mmv "?????*" "#6"

..Henrik

--
>> Jo ja nej æh bøh!
>Helt enig.
Me too ...
      -- vi lader personerne bag være anonyme

N/A (22-07-2005)
Kommentar
Fra : N/A


Dato : 22-07-05 08:32



Jesper Krogh (22-07-2005)
Kommentar
Fra : Jesper Krogh


Dato : 22-07-05 08:32

I dk.edb.system.unix, skrev Thorbjoern Ravn Andersen:
> Jesper Krogh <jesper@krogh.cc> writes:
>
> > $ for i in $(ls); do new=$(echo $i | perl -ane 's/^.{5}(.*)$/$1/;
> > print'); mv $i $new; done
> >
> > Semi-testet, men 100% på eget ansvar.
>
> Du ved godt at Perl har en rename-funktion, ikke?

Sikkert..

Løser du altid opgaverne på den for systemet mest optimale måde? Jeg gør
ikke, jeg er oftest tilfreds bare jeg får løst opgaven. (og det gør
ovenstående faktisk).

Jesper
--
../Jesper Krogh, jesper@krogh.cc, Jabber ID: jesper@jabbernet.dk


N/A (22-07-2005)
Kommentar
Fra : N/A


Dato : 22-07-05 21:22



Rander (22-07-2005)
Kommentar
Fra : Rander


Dato : 22-07-05 21:22

22 Jul 2005 20:09:39 +0200 brugte Thorbjoern Ravn Andersen 12 linier på at
fortælle dette til dk.edb.system.unix:

>> Løser du altid opgaverne på den for systemet mest optimale måde? Jeg gør
>> ikke, jeg er oftest tilfreds bare jeg får løst opgaven. (og det gør
>> ovenstående faktisk).
>SÅ vil jeg gerne spille Perl Golf med dig :)

Hvad er Perl Golf?

--
Lars Rander ** Pil ikke ved min adresse ** :(){ :&:& };:
http://rander.dk (temporarily down!)

Blodforgiftning i den ene arm begrundet på en rift på Frederiksberg
Hospital. Har konsumeret flere læger. (Skadesanmeldelse)


N/A (23-07-2005)
Kommentar
Fra : N/A


Dato : 23-07-05 11:51



Rander (23-07-2005)
Kommentar
Fra : Rander


Dato : 23-07-05 11:51

23 Jul 2005 10:50:22 +0200 brugte Thorbjoern Ravn Andersen 13 linier på at
fortælle dette til dk.edb.system.unix:

>> Hvad er Perl Golf?
>Løs en given programmeringsopgave i Perl med færrest antal tegn i
>Perlprogrammet.
>Det har før tiltrukket mange, og man kan lære noget af det ved at se
>hvordan andre har fundet interessante vinkler på et givent problem.

Ahhhh... Det tror jeg ikke at jeg vil være god til...

--
Lars Rander ** Pil ikke ved min adresse ** :(){ :&:& };:
http://rander.dk (temporarily down!)

En stor leder sætter aldrig sig selv over sine underordnede,
undtagen når det kommer til ansvar. (Jules Ormont)


Klaus Alexander Seis~ (22-07-2005)
Kommentar
Fra : Klaus Alexander Seis~


Dato : 22-07-05 08:28

Kasper Lund skrev:

> Altså, jeg har 50 filer i en mappe der alle skal have fjernet
> de føste fem karakterer i filnavnet.

I bash kan man fx

#v+

cd folder

find . -maxdepth 1 -type f -print \
| while read FILE
do
OLDNAME="${FILE##*/}"
NAMELEN="${#OLDNAME}"
if [ ${NAMELEN} -gt 5 ]; then
NEWNAME="${OLDNAME:5}"
if [ -w "${NEWNAME}" ]; then
echo "Advarsel: filen ${NEWNAME} findes allerede" >&2
else
mv -v "${OLDNAME}" "${NEWNAME}"
fi
else
echo "Advarsel: filnavnet ${OLDNAME} har mindre end 6 tegn" >&2
fi
done

#v-

Eller hvis der kun er et mappeniveau og man er sikker på at alle
filnavne har mere end fem tegn til at starte med, og der ikke er
nogen navnekollisioner, og der ikke er nogle filnavne med mellem-
rum:

#v+

cd folder

for FILE in *
do
mv -v ${FILE} ${FILE:5}
done

#v-

Med forbehold for tastefejl m.v.

Mvh,

--
Klaus Alexander Seistrup
Magnetic Ink, Copenhagen, Denmark
http://magnetic-ink.dk/

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

Månedens bedste
Årets bedste
Sidste års bedste