file .mpc

asettico asettico@rossomaltese.it
Ven 2 Nov 2007 23:00:39 CET


*In data 02/11/2007 19:38, valtmari consiglieri ha scritto*:
[...]
> su un sito francese ho trovato queste due righe comode e veloci:
> 
>     for a in *.mpc; do n=`echo $a| cut -d. -f1`.wav;mppdec $a $n;done
> 
>     for a in *.wav; do n=`echo $a| cut -d. -f1`.mp3;lame -h $a $n;done
[...]
> saranno anche comode e veloci ma io ci ho capito poco, cioè che al
> posto dell'asterisco devo mettere il titolo del pezzo ma <for a in
> che> che vuol dire?
> forse è così?
> valter# *.mpc; do n=`echo $a| cut -d. -f1`.wav;mppdec $a $n;done
> 
> la riga seguente riguarda i file .wav
> 
> Il problema di queste due righe è che non funzionano se nei nomi dei
> file ci sono spazi o simboli, così ho trovato questo semplice script
> per toglierli (toglie anche le maiuscole…):

Molto brevemente...
*.mpc trova tutti i file con estensione ".mpc" della directory corrente.
Quindi "for a in *.mpc ..." ripete i comandi tra do e done, assegnando alla
variabile "a" un nome file tra quelli trovati, uno alla volta.
Il comando "n=`...`" assegna alla variabile n l'output del comando tra
controapici (`).
I comandi tra ` fanno questo: stampa (echo) il valore di "a" e filtralo con
cut (taglia), usando il separatore "." (-d. (può starci anche uno spazio
dopo -d)) e prendi il primo campo (-f 1), quindi attaccaci ".wav".
Attenzione, perché se il nome del file contiene più di un ".", la cosa non
funziona (prova a fare: echo aaa.bbb.mpc | cut -d . -f 1). Più corretto
usare: basename $n .mpc
Per non cascare sugli spazi è semplicissimo: "circonda" l'uso di tutte le
variabili con ".
Riassumendo:

for a in *.mpc; do
    n=`basename "$a" .mpc`
    mppdec "$a" "$n.wav"
    lame -h "$n.wav" "$n.mp3"
done

> lo tralascio perchè volevo chiedervi: posso prima rinominare il file e
> aggiungere un _ fra gli spazi vuoti?

Certo, ma è inutile (vedi sopra).

HTH, ciao!

P.S.: RTFM man bash eh eh eh... :-D ;-)
-- 
 ,= ,-_-. =.  asettico ~ [ http://rossomaltese.it/   ]
((_/)o o(\_)) OpenPGP ~~ [ 1024D/1CB926BA 2003-11-29 ]
 `-'(. .)`-'
     \_/


Maggiori informazioni sulla lista glug