Kirjoittaja Aihe: Voisiko joku tehdä minulle skriptin, jolla saisin muutettua tiedostonimiä?  (Luettu 13 kertaa)

0 jäsentä ja 1 Vieras katselee tätä aihetta.

Poissa RaijaR

  • Jäsen
  • Viestejä: 1778
  • Sukupuoli: Nainen
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ä.


Poissa SuperOscar

  • Käännösryhmä
  • *
  • Viestejä: 1056
  • Sukupuoli: Mies
  • Tänään täällä, huomenna poissa
    • Legisign.org
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
pöytäkone 1, kannettavat 1–3, NUC: Debian GNU/Linux 13;  pöytäkone 2: OpenBSD 8.0; RPi: Alpine Linux 3.24