View previous topic :: View next topic |
Author |
Message |
Esteban_Torre Tux's lil' helper
Joined: 28 Dec 2004 Posts: 75 Location: Buenos Aires, Argentina
|
Posted: Mon Aug 15, 2005 5:33 pm Post subject: Ayuda con bash [Solucionado] |
|
|
SOLUCIONADO VER EL ULTIMO POST.
Eso, tengo un problema q me habia surgido hace como 4 meses y lo deje pasar y ahora me molesta denuevo, este es un ejemplo concreto: Tengo un cd entero en wma con 20 temas y los quiero convertir a mp3 u ogg, tonces uso el ffmpeg:
Code: |
ffmpeg -i '01 tema uno.wma' -ab 122 -acodec mp3 '01 tema uno.mp3'
|
Todo bien, anda perfecto entonces digo, bueno me hago un scritp con bash para acelerar la cosa y ahorrarme trabajo... pero resulta que siempre q hago un:
Code: |
for file in `ls *.wma`
|
y los archivos tienen espacios no logro q me saga todo el archivo entocnes me manda:
y no me sirve, probe con parametros del ls como:
Code: |
--quoting-style=
con:
- `literal'
- `shell'
- `shell-always'
- `c'
- `escape'
- `locale'
- `clocale'
|
Y me pasa exactamente lo mismo entonces no logro un $file para el input del ffmpeg . _________________ http://www.geocities.com/piluexo/firma.png
[img:4a5892c48a]http://www.geocities.com/piluexo/firma.png[/img:4a5892c48a]
Last edited by Esteban_Torre on Tue Aug 16, 2005 10:13 pm; edited 1 time in total |
|
Back to top |
|
|
esteban_conde Veteran
Joined: 04 Jun 2003 Posts: 1670
|
Posted: Mon Aug 15, 2005 5:51 pm Post subject: |
|
|
sustituye los espacios por "_" y te recogerá el nombre entero, puedes hacerlo dentro del mismo script. _________________ Saludos a tod@s, Esteban. |
|
Back to top |
|
|
Ferdy Retired Dev
Joined: 04 May 2002 Posts: 483 Location: España
|
Posted: Tue Aug 16, 2005 12:39 am Post subject: |
|
|
--------------------------
Code: | for i in *.wma ; do
# blah!
done |
Saludos.Ferdy |
|
Back to top |
|
|
Esteban_Torre Tux's lil' helper
Joined: 28 Dec 2004 Posts: 75 Location: Buenos Aires, Argentina
|
Posted: Tue Aug 16, 2005 10:08 pm Post subject: |
|
|
solucionado de la manera correcta lo pongo para q vean como queda xD:
Code: |
#!/bin/bash
IFS=$'\n'
for file in `ls *.wma`
do
newfile=`echo $file | sed -e "s/\(.*\)\.wma/\1/"`.mp3
ffmpeg -i $file -ab 128 -acodec mp3 $newfile
done
|
La primera vez q le pase una hojeada a man bash no lo vi pero buehg xD ya esta, la forma correcta es coloar : IFS=$'\n' xD.
Fue otro lio recortar el .wma pero buehg quedo lindo y util para cualquier conversion por eso tb lo puse. _________________ http://www.geocities.com/piluexo/firma.png
[img:4a5892c48a]http://www.geocities.com/piluexo/firma.png[/img:4a5892c48a] |
|
Back to top |
|
|
quelcom Guru
Joined: 16 Mar 2004 Posts: 306 Location: Catalonia
|
Posted: Wed Aug 17, 2005 10:49 am Post subject: |
|
|
Pues yo no veo que la forma en que lo has solucionado sea la correcta. Me explico con un ejemplo:
Code: | hades@Shinra ~ $ touch Tractor\ Amarillo.wma |
Segun cuentas el problema está en que si existe un espacio en el nombre entonces la salida es incorrecta. Veamos:
Code: |
for i in `ls *.wma`
do
echo $i
done
|
Siendo su salida:
Code: |
hades@Shinra ~ $ ./proves
Tractor
Amarillo.wma
|
Incorrecto, además de que ese `ls * ` dentro de un for es bastante guarro IMHO.
La clave te la ha dado ferdy, pero no veo donde has aplicado lo que te ha dicho:
Code: |
for i in *.wma
do
echo $i
done
|
Con esto se obtiene la salida correcta:
Code: |
hades@Shinra ~ $ ./proves
Tractor Amarillo.wma
|
Por lo que si el problema lo tenias con los espacios, el problema lo tienes en ese ls innecesario.
Saludos |
|
Back to top |
|
|
esteban_conde Veteran
Joined: 04 Jun 2003 Posts: 1670
|
Posted: Wed Aug 17, 2005 7:01 pm Post subject: |
|
|
Quote: | #!/bin/sh
# Renombramos los espacios de los archivos a _
find . -name '* *' | sort | while read FILE
do
NEWFILE=`echo ${FILE} | sed 's/ /_/g;'`
mv "${FILE}" ${NEWFILE}
echo ${NEWFILE}
done
# Convertimos wma a mp3
for f in *.wma
do
mplayer $f -ao pcm
mv audiodump.wav $f.wav
lame $f.wav
rm $f.wav
done
# Renombramos wma.wav.mp3 a mp3
find . -name '*wma.wav.mp3*' | sort | while read FILE
do
NEWFILE=`echo ${FILE} | sed 's/wma.wav.mp3/mp3/g;'`
mv "${FILE}" ${NEWFILE}
done
|
¿adivinas lo que hace el programa?
La verdad es que no es mio ni puedo citar donde lo encontré ya que no me acuerdo, de todas formas veo que al menos te has currado un poco el sed que será lo más positivo de este asunto. _________________ Saludos a tod@s, Esteban. |
|
Back to top |
|
|
Esteban_Torre Tux's lil' helper
Joined: 28 Dec 2004 Posts: 75 Location: Buenos Aires, Argentina
|
Posted: Thu Aug 18, 2005 3:25 pm Post subject: |
|
|
Ese script hace lo mismo pero es larguisimo al pedo probablemente(diria obviamente) tarde mas q el ffmpeg; porque pasa de wma a wav usando el disco rigido para guardarlo y de ahi a mp3 y dsp lo renombra, mi script anda y es igual de correcto que poner: *.wma, en realidad es lo mismo solo que usando ls podemos poner despues mas parametros selectivos o reemplazarlo por cualqueir comando y va a andar. El sed lo hice yo con man sed. _________________ http://www.geocities.com/piluexo/firma.png
[img:4a5892c48a]http://www.geocities.com/piluexo/firma.png[/img:4a5892c48a] |
|
Back to top |
|
|
|