Gentoo Forums
Gentoo Forums
Gentoo Forums
Quick Search: in
Ayuda con bash [Solucionado]
View unanswered posts
View posts from last 24 hours

 
Reply to topic    Gentoo Forums Forum Index Spanish
View previous topic :: View next topic  
Author Message
Esteban_Torre
Tux's lil' helper
Tux's lil' helper


Joined: 28 Dec 2004
Posts: 75
Location: Buenos Aires, Argentina

PostPosted: Mon Aug 15, 2005 5:33 pm    Post subject: Ayuda con bash [Solucionado] Reply with quote

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:
Code:

01
tema
uno.wma

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
View user's profile Send private message
esteban_conde
Veteran
Veteran


Joined: 04 Jun 2003
Posts: 1670

PostPosted: Mon Aug 15, 2005 5:51 pm    Post subject: Reply with quote

sustituye los espacios por "_" y te recogerá el nombre entero, puedes hacerlo dentro del mismo script.
_________________
Saludos a tod@s, Esteban.
Back to top
View user's profile Send private message
Ferdy
Retired Dev
Retired Dev


Joined: 04 May 2002
Posts: 483
Location: España

PostPosted: Tue Aug 16, 2005 12:39 am    Post subject: Reply with quote

Code:
man bash


--------------------------

Code:
for i in *.wma ; do
     # blah!
done


Saludos.Ferdy
Back to top
View user's profile Send private message
Esteban_Torre
Tux's lil' helper
Tux's lil' helper


Joined: 28 Dec 2004
Posts: 75
Location: Buenos Aires, Argentina

PostPosted: Tue Aug 16, 2005 10:08 pm    Post subject: Reply with quote

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
View user's profile Send private message
quelcom
Guru
Guru


Joined: 16 Mar 2004
Posts: 306
Location: Catalonia

PostPosted: Wed Aug 17, 2005 10:49 am    Post subject: Reply with quote

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
View user's profile Send private message
esteban_conde
Veteran
Veteran


Joined: 04 Jun 2003
Posts: 1670

PostPosted: Wed Aug 17, 2005 7:01 pm    Post subject: Reply with quote

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
View user's profile Send private message
Esteban_Torre
Tux's lil' helper
Tux's lil' helper


Joined: 28 Dec 2004
Posts: 75
Location: Buenos Aires, Argentina

PostPosted: Thu Aug 18, 2005 3:25 pm    Post subject: Reply with quote

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
View user's profile Send private message
Display posts from previous:   
Reply to topic    Gentoo Forums Forum Index Spanish All times are GMT
Page 1 of 1

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum