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