openSUSEa suomeksi

Muut => Yleinen keskustelualue => Aiheen aloitti: RaijaR - 01.11.2026 - klo:18:54

Otsikko: Voisiko joku tehdä minulle skriptin, jolla saisin muutettua tiedostonimiä?
Kirjoitti: RaijaR - 01.11.2026 - klo:18:54
Minulla on kohtuulisen paljon proge- ja hevi-musikkia tallennetuna tietokoneelle, kun tuli hurahdettua em. musiikkiin jo 70-luvun alussa.

Olen kopionut musiikitiedostoja tietokoneen hakemistoon, joka on toistaiseksi nimetty musiikki/äää.
Koska vuosien saatossa on tullut nimettyä tiedostoja vähän niin sun näin, niin pyydän, josko joku ystävällisesti voisi tehdän skriptin, jolla nimet voisi vaihtaa alkuperäiseksi :). Itse en osaa.

Homma ei pitäisi olla turhan ongelmallinen eli tiedostonimen alusta pitäisi poistaa vain numerot.  ;)
eli esim. "01 - " pois nimen edestä.

Otsikko: Vs: Voisiko joku tehdä minulle skriptin, jolla saisin muutettua tiedostonimiä?
Kirjoitti: SuperOscar - 01.11.2026 - klo:20:47
Minusta järkevintä sinun olisi asentaa KRename, jolla voisit helposti varmistaa, että uudet nimet menevät oikein ennen kuin mitään tehdään.

Mutta tässä ratkaisut Pythonille ja Zsh:lle.

Python-versio haluaa muutettavien tiedostojen nimet parametreiksi:

Koodia: [Valitse]
#!/usr/bin/env python3

import sys
import os
import re

pat = re.compile(r'^(\d+)\s-\s(.+)$')
for name in sys.argv[1:]:
    m = pat.match(name)
    if m:
        _, new_name = m.groups()
        print(f'{name} -> {new_name}')
        try:
            os.rename(name, new_name)
        except OSError:
            print('VIRHE!')

Zsh-versio ei vaadi parametreja ja hakee vain tiedostonimiä, jotka alkavat numerolla ja päättyvät .flac, .mp3 tai .ogg:

Koodia: [Valitse]
#!/bin/zsh

local name new_name

for name in <->*.(flac|mp3|ogg); do
    new_name=${name##<-> - }
    mv -v $name $new_name
done