Regole del forum
1) Citare in modo preciso il linguaggio di programmazione usato.
2) Se possibile portare un esempio del risultato atteso.
3) Leggere attentamente le risposte ricevute.
4) Scrivere i messaggi con il colore di default, evitare altri colori.
5) Scrivere in Italiano o in Inglese, se possibile grammaticalmente corretto, evitate stili di scrittura poco chiari, quindi nessuna abbreviazione tipo telegramma o scrittura stile SMS o CHAT.
6) Appena registrati è consigliato presentarsi nel forum dedicato.
La non osservanza delle regole porta a provvedimenti di vari tipo da parte dello staff, in particolare la non osservanza della regola 5 porta alla cancellazione del post e alla segnalazione dell'utente. In caso di recidività l'utente rischia il ban temporaneo.
#!/bin/bash
for filename in *.txt; do
lame $filename
done
il mio problema è che se ho il file prova.wav lo script crea il file prova.wav.mp3.
Io devo poi rinominare il file prova.wav.mp3 in prova.mp3.
Come posso modificare lo script per fare in modo che, dopo aver creato l'mp3 mi rinomini anche il file?
Ultima modifica di daniele50 il lun 12 dic 2011, 17:07, modificato 1 volta in totale.
In questo caso infile sarebbe $filename, e outfile saremme filename troncato di tutto ciò che viene dopo l'ultimo punto, più l'aggiunta della nuova estensione mp3.
In alternativa puoi usare basename per ricavare il sono nome.
Edit:
Scusa ZeroUno non avevo visto che suggerivi anche tu basename.
#!/bin/bash
for filename in *.wav; do
lame $filename
mv $filename.mp3 $(basename $filename .wav).mp3
done
Così funziona alla perfezione, tranne per il fatto che non ho considerato una cosa:
se nel nome file ci sono spazi non fa nulla... posso sostituire nel nome file gli spazi con un carattere (ad esempi "_") in automatico?
#!/bin/bash
for filename in *.wav; do
lame "$filename"
mv "$filename".mp3 $(basename "$filename" .wav).mp3
done
il comando lame funziona, ma il mv no, ad esempio sul file amore dimmelo.wav.mpe mi dice:
mv: target `dimmelo.mp3' is not a directory
Per forza, devi proteggere gli spazi contenuti anche nell'output di basename, quindi devi racchiudere anche l'intera espressione contenente basename tra doppi apici: