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

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

Poissa RaijaR

  • Jäsen
  • Viestejä: 1782
  • 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ä: 1058
  • 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

Poissa harmie

  • Valvoja
  • *
  • Viestejä: 2878
  • Sukupuoli: Mies
Itse olen käyttänyt MusicBrainz Picard nimistä ohjelmaa. Sillä saa netistä haettua albumin tiedot ja se samlla laittaa ne metadataan niin sitä voi hyödyntää sitten monessa sovelluksessa.
Toki tämä tapa on työläämpi kun pelkkä tiedoston uudelleen nimeäminen, mutta lopussa kiitos seisoo.

Poissa RaijaR

  • Jäsen
  • Viestejä: 1782
  • Sukupuoli: Nainen
Minäpä asensin tuon ohjelman, mutta en osannut sitä ainakaan äkkiseltään käyttää.
Pitääpä vielä tuumata asiaa...  ::)

===========================
Kun en osaa ohjelmoida millään kielellä, niin kysyn seuraavaa:
1. miten saan tehtyä ko. hakemistoluettelosta tiedoston?
- luulisin, että on olemassa jokin komento, jolla lukaistaan hakemistoluettelo tiedostoksi - luulisin...
- luulisin, että osaisin jatkaa siitä sitten editorilla eteenpäin - luulisin...

Noin tein aikoinaan tnevellä (Telenokia EVE), ja se oli helppoa, kun ei tarvinnut hiiren kanssa heilua, senkus näppäimistöstä antoi komentoaja, ja nehän tuli selkärangasta. Tämä komentohässäkkä tallennettiin, komentohässäkkä ajettiin ja käskettiin toistaa n. kertaa. Tämä systeemi toimi hyvin meillä, jotka eivät työkseen koodanneet.
« Viimeksi muokattu: eilen kello 14:45 kirjoittanut RaijaR »

Poissa harmie

  • Valvoja
  • *
  • Viestejä: 2878
  • Sukupuoli: Mies
Komento etsii nykyisestä hakemistosta sekä sen kaikkine alihakemistoineen yleisimmät musiikkitiedostomuodot ja tallentaa niiden polut musiikkitiedostot.txt-tiedostoon.

Koodia: [Valitse]
find . -type f \( -iname "*.mp3" -o -iname "*.flac" -o -iname "*.wav" -o -iname "*.m4a" -o -iname "*.ogg" -o -iname "*.aac" \) > musiikkitiedostot.txt

Poissa RaijaR

  • Jäsen
  • Viestejä: 1782
  • Sukupuoli: Nainen
Kiitos harmie!

Tein tuosta komennosta ensimmäiseksi tiedoston pätsit-hakemistooni  :)

Ja eikun heti kokeilemaan...

Poissa RaijaR

  • Jäsen
  • Viestejä: 1782
  • Sukupuoli: Nainen
Juu, ei. En osaa.
Oletin, että komennolla:  rename "01 - Black Sabbath - Black Sabbath.mp3","Black Sabbath - Black Sabbath.mp3" onnistuisi, mutta tuli terveiset: rename: liian vähän argumentteja rename: Try 'rename --help' for more information. :'(

Alkaa hermot mennä, kun ei näinkään yksikertaista hommaa osaa tehdä. Voi, kun jostain saisin sen eve-editorin...


Poissa harmie

  • Valvoja
  • *
  • Viestejä: 2878
  • Sukupuoli: Mies
Käytä SuperOscarin laittamaan scriptiä.

Poissa SuperOscar

  • Käännösryhmä
  • *
  • Viestejä: 1058
  • Sukupuoli: Mies
  • Tänään täällä, huomenna poissa
    • Legisign.org
Koodia: [Valitse]
find . -type f \( -iname "*.mp3" -o -iname "*.flac" -o -iname "*.wav" -o -iname "*.m4a" -o -iname "*.ogg" -o -iname "*.aac" \) > musiikkitiedostot.txt

Itse tykkään Zsh:ssa juuri siitä, että tällaiset asiat ovat niin tavattoman paljon yksinkertaisempia ;)

Koodia: [Valitse]
print -l **/*.((#i)aac|flac|mp3|m4a|ogg|wav) > musiikkitiedostot.txt
pöytäkone 1, kannettavat 1–3, NUC: Debian GNU/Linux 13;  pöytäkone 2: OpenBSD 8.0; RPi: Alpine Linux 3.24

Poissa RaijaR

  • Jäsen
  • Viestejä: 1782
  • Sukupuoli: Nainen
Minä olen ihan ymmälläni tämän asian kanssa. En enää tiedä, mitä minun pitäisi tehdä.

En ymmärrä, miksi tiedostonimen muuttaminen on niin hankalaa.
Ohessa lista niistä musiikkitiedostojen nimistä, jotka pitäisi muuttaaa, enkä haluaisin niitä alkaa käsipelillä muuttamaan, mutta sekin kyllä minulle sopisi, kunhan saisin listan tehtyä.

Eli siis: 01 - Black Sabbath - Black Sabbath.mp3 > Black Sabbath - Black Sabbath.mp3

Poissa SuperOscar

  • Käännösryhmä
  • *
  • Viestejä: 1058
  • Sukupuoli: Mies
  • Tänään täällä, huomenna poissa
    • Legisign.org
Minä olen ihan ymmälläni tämän asian kanssa. En enää tiedä, mitä minun pitäisi tehdä.

Vaikea sanoa, kun en tiedä, mitä olet yrittänyt, mutta ainakin tuon minun Python-skriptini pitäisi toimia tässä ongelmitta. Muistitko antaa sille parametriksi nimet tai kuviot? Esimerkiksi:
Koodia: [Valitse]
./nropois.py *.mp3

(Olettaen, että skripti on tallennettu samaan kansioon nimelle ”nropois.py”.)
pöytäkone 1, kannettavat 1–3, NUC: Debian GNU/Linux 13;  pöytäkone 2: OpenBSD 8.0; RPi: Alpine Linux 3.24