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

1 Jäsen ja 2 Vierasta katselee tätä aihetta.

Paikalla RaijaR

  • Jäsen
  • Viestejä: 1781
  • 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ä.


Paikalla SuperOscar

  • Käännösryhmä
  • *
  • Viestejä: 1057
  • 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

Paikalla 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.

Paikalla RaijaR

  • Jäsen
  • Viestejä: 1781
  • 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: tänään kello 14:45 kirjoittanut RaijaR »

Paikalla 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

Paikalla RaijaR

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

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

Ja eikun heti kokeilemaan...

Paikalla RaijaR

  • Jäsen
  • Viestejä: 1781
  • 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...


Paikalla harmie

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

Paikalla SuperOscar

  • Käännösryhmä
  • *
  • Viestejä: 1057
  • 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