fájlok átnevezése

Fórumok

Adott rengeteg ilyen szerkezetű fájlnév:
Mambury, 25.Okt.1945.sav
Ebből ilyet szeretnék készíteni:
Mambury, 1945-10-25.sav
Sajnos a krename-val egyelőre nem tudtam megoldani.

Hozzászólások

Pedig azzal menni kellene. Két lépésből áll a feladat:
1. átrendezni a sorrendet - a krename "insert part of filename" dolgait is használhatod, a

[$1;9][$17-[length]]-[$13;3]-[$10;2]

template a

Mambury, 25.Okt.1945.sav

névből

Mambury, 1945-Okt-25.sav

nevet gyárt

2. az Okt/Nov/stb. szövegek lecserélése számra, ehhez krename-ban ott a "find and replace"

Ezeket szerintem egyben nem tudja a krename, de két lépésben mennie kellene.

Nehézség lehet még, ha nem csak Mambury van hanem más nevek is, főleg ha ezek valamelyike tartalmazza az Okt (Nov, stb.) részt. De hagyok neked is a feladatból :)

Nem ismerem a grafikus csoda-átnevezőket, viszont parancssoros eszközökkel, egy pár soros szkripttel nem túl nehezen megoldható:


#!/bin/sh

for f in *.sav; do
  DATUM=`echo ${f} | sed "s@.*, \(.*\)\.sav@\1@"`
  TELEPULES=`echo ${f} | sed "s@\(.*\),.*@\1@"`
  UJDATUM=`date -j -f '%d.%b.%Y' "${DATUM}" +'%Y-%m-%d'`
  mv "${f}" "${TELEPULES}, ${UJDATUM}.sav"
done

Megjegyzések:

  1. nem tesztelt :) (azaz egy másolaton próbáld ki)
  2. a date parancs paraméterezése nem biztos, hogy linuxon is jó (FreeBSD-re így van), ennek nézz utána
  3. éles bevetés előtt az mv "${f}"... sor elé egy echo parancsot érdemes belökni, hogy lásd, jól működne-e
  4. a szkript TELEPÜLÉSNÉV-AMIBEN-NINCS-VESSZŐ, NAP.RÖVHÓNAP.ÉV.sav-szerű fájlnevekre működik megfelelően

rename.pl 's/(, )(\d+)\.(\S+?)\.(\d+)/my$n;sprintf"%s%s-%02d-%s",$1,$4,{map{$_=>++$n}qw{Jan Feb Mar Apr Maj Jun Jul Aug Szep Okt Nov Dec}}->{$3},$2/e' *.sav

~~~~~~~~
deb http://deb.uucp.hu/ wheezy yazzy repack