Fájl másolás és átnevezés lista alapján - Perlben, esetleg windows batch szkripttel

Segítségeteket kérném! Ne nevessetek ki, tudom, hogy alap, de sehogy sem boldogulok vele.

Van egy lista TXT fájlom, ami a következőképpen néz ki:

"aaa";"akarmi.jpg,valami.gif,megvalami.png"
"bbb";"fajl.jpg"
"ccc";"ezjokep.jpg,ezisjokep.png"

A feladatom az lenne, hogy átmásolni és egyben átnevezni a lista segítségével egy másik mappába a fenti fájlokat valahogy így:

aaa_00.jpg
aaa_01.gif
aaa_02.png
bbb_00.jpg
ccc_00.jpg
ccc_01.png

Előre is köszönöm!

Update1: Nincs speciális karakter, ékezet, vessző, pontosvessző a fájlnevekben.

Hozzászólások

Melyik intézmény melyik szakának melyik tantárgyi beadandója?

Nem ilyen téma. Saját célra kellene, fotókat rendezgetni. Több tízezer képről van szó, és amivel elkészítettem a txt fájlt (Drupal views) ott nem tudom "összekattintgatni", hogy létre is hozzon egy másolatot ezekből a fájlokból a fenti elnevezés alapján. Bocs, hogy ilyen alap dolgokkal zaklatlak benneteket. Ne nevessetek ki! Köszi.

Ha már ilyen CSV-nek néz ki, képletezd be Excel-ben vagy valami hasonlóban, hogy generáljon neked cp parancsokat, és az eredményt másold be shellbe :).

Amúgy annyira nem vicc, pont az szokott a baj lenni az ilyen fájloknál, ha van speckó karakter (erről semmit nem írtál), és ha véletlenül szabványos CSV, akkor tényleg a fentebb írt megoldás a leggyorsabb.

--

Ennek a kimenetét lehet szkriptként felhasználni, és - mint ilyenkor mindig - imádkozni azért, hogy ne legyen túl elegáns, vagy túl elegánsra tervezett nevű kép (vesszős, pontosvesszős, hogy csak a két triviálisat említsem):


awk -F'";"' '{ gsub(/^"|"$/, ""); n=split( $2, a, /,/); for( i=0; i<n; ++i) { ext = a[i+1]; sub( /.*\./, "", ext);   printf "mv \"%s\" \"%s_%02d.%s\"\n", a[i+1], $1, i, ext}}' <lista.txt >szkript.sh