Portál AbcLinuxu, 14. května 2025 00:08

Dotaz: Regularni vyraz

polo23 avatar 1.3.2012 14:31 polo23 | skóre: 28 | blog: polo23
Regularni vyraz
Přečteno: 294×
Odpovědět | Admin
Ahoj,
vymyslim jednoduchy regularni vyraz, ale nedari se mi. Muzete nekdo poradit? O co jde...Mam adresar se soubory ktere se jmenuji Track1.mp3 az Track14.mp3. Ja potrebuju ke vsem souborum s jednociselnym indexem pridat nulu pred tento index napr. Track01.mp3. K prejmenovani pouzivam prikaz rename.

Diky za nasmerovani

Řešení dotazu:


Nástroje: Začni sledovat (1) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

polo23 avatar 1.3.2012 14:42 polo23 | skóre: 28 | blog: polo23
Rozbalit Rozbalit vše Re: Regularni vyraz
Odpovědět | | Sbalit | Link | Blokovat | Admin
Zkousel jsme to takto, ale nejede mi to. rename 's/track\([0-9]\.mp3\)/track0$1/g' *.mp3
1.3.2012 15:04 voda | skóre: 28
Rozbalit Rozbalit vše Re: Regularni vyraz
Zkus rename 's/Track([0-9])\.mp3/Track0$1.mp3/g' *.mp3
polo23 avatar 1.3.2012 16:00 polo23 | skóre: 28 | blog: polo23
Rozbalit Rozbalit vše Re: Regularni vyraz
Diky za opravu -funguje.
2.3.2012 10:36 Darabella
Rozbalit Rozbalit vše Re: Regularni vyraz
Ono pokud by to nemelo byt "case sensitive" (takze aby bylo jedno, jestli byl puvodni nazev Track1.mp3 nebo track1.mp3), tak by se to dalo upravit asi jeste takhle:

rename 's/[tT]rack([0-9])\.mp3/Track0$1.mp3/g' *.mp3
1.3.2012 15:39 Pavel
Rozbalit Rozbalit vše Re: Regularni vyraz
Pokud to nemusí být zrovna regulární výraz a máš bash, tak tohle by mělo fungovat:

for i in `ls Track?.mp3`; do j=`expr substr $i 6 1`; mv $i Track0$j.mp3; done
1.3.2012 16:24 Kit
Rozbalit Rozbalit vše Re: Regularni vyraz
Tak tohle spíš považuji za vtip. Za uvedených podmínek to fungovat může, ale obecně je tento skript nepoužitelný.
1.3.2012 19:52 Patrik Uhrak | skóre: 31 | blog: pato
Rozbalit Rozbalit vše Re: Regularni vyraz

Ono to ani za uvedenych podmienok nefunguje, toboz nie obecne. Ale urcite by som to vtipom nenazyval, pretoze bola aspon snaha a bez nej to nikdy lepsie nebude. Aj ja som dal dokopy uz kopec "vtipov" (sledujuc vasu terminologiu) a myslim, ze je to len lepsie stale.

Toto by mohlo byt nieco univerzalnejsie, bez nepotrebnych externych aplikacii a fungovat by to malo jednoduchou upravou PREFIX a SUFFIX a pripadne pocet miest.

#! /bin/bash
PREFIX='Track'
SUFFIX='.mp3'

for FILE in *; do
        OLD_NUM="${FILE#$PREFIX}"
        OLD_NUM="${OLD_NUM%$SUFFIX}"
        NEW_NUM="$(printf "%02d" "$OLD_NUM")"
        mv -v "$FILE" "${PREFIX}${NEW_NUM}${SUFFIX}"
done

Ale toto je len uplny zaklad, ono by bolo vhodne este poupravovat, aby to bralo cestu k adresarom so subormi, prefix a suffix aj ako parameter, patterny a pod. Ale zadavatel sa s tym uz rad pohra aj sam a upravi to, ak bude mat zaujem ;) alebo pouzije rename, ako bolo uz vyssie spomenute.

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.