Si, come dicevo nei primi post, ho in pratica già risolto proprio con
cut paste sed ecc...
Ma in modo semi automatico, perchè alla fine dovendo fare questa manovra
una volta sola ho fatto prima così che a starci a studiare troppo.
---
ls -1 > old
---
Questo crea una lista dei nostri file mp3 ordinati in ordine alfabetico
in base al nome originario. siccome non contengono spazi siamo anche
apposto così senza apici o altro.
---
sed "s/^/\'/;s/$\.mp3\'/" titoli.txt > new
---
Quest'altro prende il fiel dei titoli e ne crea una lista di nomi
da attrivbuire ai vari files comprensivi di apici in modo da preservare
gli spazi.
Mancano però gli "zeri" iniziali davanti ai primi 9 nomi.
Li ho banalmente aggiunti a mano con vim:
---
:s/^/0/9
---
che poi si poteva anche fare la stessa cosa più elegantemente con sed:
---
sed 1,9's/^/0/' titoli.txt
---
E mi viene in mente che si potrebbe anche già aggiungere un "mv" davanti
ai files in "old"... Soluzione definitiva, oqquasi:
---
ls -1 *mp3|sed 's/^/mv /' > old
sed "1,9s/^/0/;s/^/'/;s/$/.mp3'/" titoli.txt > new
paste old new > rename_rule
. rename rule
---
In pratica creiamo un script di rinomina in modo automatico e poi lo
eseguiamo con la bash attraverso l'operatore "."
Funziona?
Nel mio caso no, perchè alcunii titoli delle canzoni oltre gli spazi
contengono anche degli apostrofi che fanno a pugni con gli apici
per proteggere gli spazi.
Si può risolvere modificando il comando sed e aggiungendovi la rimozione
degli apici, al loro posto si può mettere uno spazio esempio:
---
sed "1,9s/^/0/;s/'/ /;s/^/'/;s/$/.mp3'/" titoli.txt > new
---
Con questa modifica funziona tutto.
Però è una soluzine un po' arzigogolata...
Se voleste provarla anche senza avere gli mp3 ecco una possibile
replica di quello che ho fatto poco fà per testare la faccenda.
Il file titoli.txt però dovrete riempirlo con la vostra lista di
canzoni e assegnare il numero totale delle tracce alla variabile
NTR (nel mio caso avevo 50 canzoni).
Occhio al "vim" per inserirle da dentro lo script.
Il "motore" del seguente script è fatto dalle ultime 5 righe.
quindi potete anche spezzarvi lo script in due ecc ecc...
---
#!/bin/sh
NTR=50
# creo l'ambiente di lavoro per il test
mkdir rinominatracce
cd rinominatracce
for (( i=1; i<=$NTR; i++ ))
do
(( $i <= 9 )) && touch traccia_0$i.mp3|| touch traccia_$i.mp3
done
# Apro vim per incollarvi dentro la lista dei titoli
# copiatta dalla rete.
vim titoli.txt
# La parte precedente si può fare anche a mano e serve per
# automatizzare in parte la crazione di un ambiente di test.
# Si può tagliare e fare tutto a mano
ls *mp3|sed 's/^/mv /' > old
sed "1,9s/^/0/;s/'/ /;s/^/'/;s/$/.mp3'/" titoli.txt > new
paste old new > rename_rule
. rename rule
rm old new rename_rule
---
Boh, sembra anche abbastanza concisa come cosa,
ma non mi piace troppo. Forse perchè avevo in
mente di risolverla con degli array...
Voi cosa ne dite?