Newsgroup: it.comp.os.linux.iniziare
Titolo: [bash scriptin'] processare tutti i file di una directory (ogg 2 mp3)

Salve...
devo convertire tutti i file di una directori da ogg a mp3...
e ho trovato che questo comando:
oggdec FILEINPUT -o - |lame - -mj -h -v -V2 -b32 -B320 > FILEOUTPUT
fnziona a dovare con un file alla volta..
vorrei però creare uno script che lanciatolo processi tutti i file contenuti
nella directory (sostituendoli quindi di volta in volta a FILEINPUT e
restituendoli col nome uguale in uscita()magari cambiando estensione)
grazie mille

 vorrei perň creare uno script che lanciatolo processi tutti i file 
man find.
Davide
-- 
Tact, n.:
	The unsaid part of what you're thinking.

lista=`find -type f -name "*.ext"`
for i in $lista
do
	yourcommand
done
bye
-- 
  .''`.  | E' difficile conoscere un uomo. Ma un uomo facile a
 : :'  : | conoscersi forse non vale la spesa. [Chen Chiu]
 `. `'`  |
   `-    |

grazie
ma adesso sorge un altro problema....
i file sono con dentro spazi e caratteri strani del tipo
01\- \ihgoiergj.ogg
e in input il comando vede solo 01 come nome del file.


 i file sono con dentro spazi e caratteri strani del tipo
usa find senza for o cambia il 'separatore di campo'.
Man bash per quest'ultima parte.
Davide
-- 
"Amnesia used to be my favorite word, but then I forgot it."

 e in input il comando vede solo 01 come nome del file.
Questa e' quasi una FAQ ormai:
http://makeashorterlink.com/?T2D865859
http://makeashorterlink.com/?V5E832859
-- 
Enrico Bodo  -  Assistant Professor in Theoretical Chemistry 
University of Rome "La Sapienza" 
Department of Chemistry         

ho scritto cosě ma non vuole proprio andare...
#!/bin/bash
export OLDIFS=$IFS
export IFS=\
#lista=`find -type f -name "*.ogg"`;
LISTA=$(ls -1);
for i in $LISTA;
do
        echo $i;
        #oggdec $i -o - |lame - -mj -h -v -V2 -b32 -B320 > $i.mp3;
done;
export OLDIFS=$IFS


 #lista=`find -type f -name "*.ogg"`;
Tra queste due righe ci vuole per forza una riga vuota. Ti spiego: il
separatore degli argomenti (IFS) e' composto di default da "spazio", 
"tabulazione" o "invio". Tu vuoi ridefinirlo in modo che sia composto 
solo da "invio". Quindi vorresti poter scrivere
export IFS=<invio>
cosa che non puoi fare perche' il tasto invio ha un significato speciale. 
Quindi devi dire alla shell di ignorare per il momento il significato del 
tasto speciale <invio>, per farlo devi usare un carattere di "escape" 
cioe' "\". Quindi nello script devi scrivere:
export IFS=\<invio>
Per farti capire come fare esplicitando i tasti:
#!/bin/bash<invio>
export OLDIFS=$IFS<invio>
export IFS=\<invio>
<invio>
#lista=`find -type f -name "*.ogg"`; .....


> ho scritto così ma non vuole proprio andare...


 ERROR: Failed to open input file: File name too long
Non hai impostato IFS al solo <invio>. Nelle righe incriminate non ci devono
essere spazi di troppo. 
Tagliamo la testa la toro e facciamo in un altro modo:
#!/bin/bash
for i in *.ogg; 
do
     # nome del file di output 
     name=$(echo "$i" | sed s/ogg/mp3/)   
     oggdec "$i" -o - | lame - -mj -h -v -V2 -b32 -B320 >  "$name"
done;


Bodo wrote:
sono un po sul diperato...
adesso gli errori peggiorano...
./ogg2: line 4:      # nome del file di output : command not found
./ogg2: line 1: echo 01 - volume.ogg : command not found
./ogg2: line 1:  sed s/ogg/mp3/: No such file or directory
./ogg2: line 5:      name=: command not found
./ogg2: line 6:      oggdec 01 - volume.ogg -o - : command not found
./ogg2: line 6:  lame - -mj -h -v -V2 -b32 -B320 : command not found
./ogg2: line 4:      # nome del file di output : command not found
./ogg2: line 1: echo 02 - e natale ma io non ci sto dentro.ogg : command not
found
./ogg2: line 1:  sed s/ogg/mp3/: No such file or directory
./ogg2: line 5:      name=: command not found
./ogg2: line 6:      oggdec 02 - e natale ma io non ci sto dentro.ogg -o - :
command not found
./ogg2: line 6:  lame - -mj -h -v -V2 -b32 -B320 : command not found
./ogg2: line 4:      # nome del file di output : command not found
./ogg2: line 1: echo 03 - tocca qui.ogg : command not found
./ogg2: line 1:  sed s/ogg/mp3/: No such file or directory
./ogg2: line 5:      name=: command not found
./ogg2: line 6:      oggdec 03 - tocca qui.ogg -o - : command not found
./ogg2: line 6:  lame - -mj -h -v -V2 -b32 -B320 : command not found
./ogg2: line 4:      # nome del file di output : command not found
./ogg2: line 1: echo 04 - ohi maria maria maria fr connection rmx.ogg :
command not found
./ogg2: line 1:  sed s/ogg/mp3/: No such file or directory
./ogg2: line 5:      name=: command not found
./ogg2: line 6:      oggdec 04 - ohi maria maria maria fr connection
rmx.ogg -o - : command not found
./ogg2: line 6:  lame - -mj -h -v -V2 -b32 -B320 : command not found
./ogg2: line 4:      # nome del file di output : command not found
./ogg2: line 1: echo 05 - unaltra cosa che ho perso.ogg : command not found
./ogg2: line 1:  sed s/ogg/mp3/: No such file or directory
./ogg2: line 5:      name=: command not found
./ogg2: line 6:      oggdec 05 - unaltra cosa che ho perso.ogg -o - :
command not found
./ogg2: line 6:  lame - -mj -h -v -V2 -b32 -B320 : command not found
./ogg2: line 4:      # nome del file di output : command not found
./ogg2: line 1: echo 06 - voglio una lurida.ogg : command not found
./ogg2: line 1:  sed s/ogg/mp3/: No such file or directory
./ogg2: line 5:      name=: command not found
./ogg2: line 6:      oggdec 06 - voglio una lurida.ogg -o - : command not
found
./ogg2: line 6:  lame - -mj -h -v -V2 -b32 -B320 : command not found
./ogg2: line 4:      # nome del file di output : command not found
./ogg2: line 1: echo 07 - tranqi funky.ogg : command not found
./ogg2: line 1:  sed s/ogg/mp3/: No such file or directory
./ogg2: line 5:      name=: command not found
./ogg2: line 6:      oggdec 07 - tranqi funky.ogg -o - : command not found
./ogg2: line 6:  lame - -mj -h -v -V2 -b32 -B320 : command not found
./ogg2: line 4:      # nome del file di output : command not found
./ogg2: line 1: echo 08 - domani.ogg : command not found
./ogg2: line 1:  sed s/ogg/mp3/: No such file or directory
./ogg2: line 5:      name=: command not found
./ogg2: line 6:      oggdec 08 - domani.ogg -o - : command not found
./ogg2: line 6:  lame - -mj -h -v -V2 -b32 -B320 : command not found
./ogg2: line 4:      # nome del file di output : command not found
./ogg2: line 1: echo 09 - cosÃ¬ e cosÃ  rmx 97.ogg : command not found
./ogg2: line 1:  sed s/ogg/mp3/: No such file or directory
./ogg2: line 5:      name=: command not found
./ogg2: line 6:      oggdec 09 - cosÃ¬ e cosÃ  rmx 97.ogg -o - : command not
found
./ogg2: line 6:  lame - -mj -h -v -V2 -b32 -B320 : command not found
./ogg2: line 4:      # nome del file di output : command not found
./ogg2: line 1: echo 10 - il funkytarro.ogg : command not found
./ogg2: line 1:  sed s/ogg/mp3/: No such file or directory
./ogg2: line 5:      name=: command not found
./ogg2: line 6:      oggdec 10 - il funkytarro.ogg -o - : command not found
./ogg2: line 6:  lame - -mj -h -v -V2 -b32 -B320 : command not found
./ogg2: line 4:      # nome del file di output : command not found
./ogg2: line 1: echo 11 - 2030.ogg : command not found
./ogg2: line 1:  sed s/ogg/mp3/: No such file or directory
./ogg2: line 5:      name=: command not found
./ogg2: line 6:      oggdec 11 - 2030.ogg -o - : command not found
./ogg2: line 6:  lame - -mj -h -v -V2 -b32 -B320 : command not found
./ogg2: line 4:      # nome del file di output : command not found
./ogg2: line 1: echo 12 - la fidanzata.ogg : command not found
./ogg2: line 1:  sed s/ogg/mp3/: No such file or directory
./ogg2: line 5:      name=: command not found
./ogg2: line 6:      oggdec 12 - la fidanzata.ogg -o - : command not found
./ogg2: line 6:  lame - -mj -h -v -V2 -b32 -B320 : command not found
./ogg2: line 4:      # nome del file di output : command not found
./ogg2: line 1: echo 13 - guapa loca.ogg : command not found
./ogg2: line 1:  sed s/ogg/mp3/: No such file or directory
./ogg2: line 5:      name=: command not found
./ogg2: line 6:      oggdec 13 - guapa loca.ogg -o - : command not found
./ogg2: line 6:  lame - -mj -h -v -V2 -b32 -B320 : command not found
./ogg2: line 4:      # nome del file di output : command not found
./ogg2: line 1: echo 14 - tu mi fai cantare.ogg : command not found
./ogg2: line 1:  sed s/ogg/mp3/: No such file or directory
./ogg2: line 5:      name=: command not found
./ogg2: line 6:      oggdec 14 - tu mi fai cantare.ogg -o - : command not
found
./ogg2: line 6:  lame - -mj -h -v -V2 -b32 -B320 : command not found
./ogg2: line 4:      # nome del file di output : command not found
./ogg2: line 1: echo 15 - senza regole.ogg : command not found
./ogg2: line 1:  sed s/ogg/mp3/: No such file or directory
./ogg2: line 5:      name=: command not found
./ogg2: line 6:      oggdec 15 - senza regole.ogg -o - : command not found
./ogg2: line 6:  lame - -mj -h -v -V2 -b32 -B320 : command not found
./ogg2: line 4:      # nome del file di output : command not found
./ogg2: line 1: echo 16 - cosÃ¬ mi tieni.ogg : command not found
./ogg2: line 1:  sed s/ogg/mp3/: No such file or directory
./ogg2: line 5:      name=: command not found
./ogg2: line 6:      oggdec 16 - cosÃ¬ mi tieni.ogg -o - : command not found
./ogg2: line 6:  lame - -mj -h -v -V2 -b32 -B320 : command not found
ed ho fatto un copia + incolla del tuo testo postato....
per quanto riguarda la strade precedente quella dell'IFS puoi mandarmi il
listato in hex così sono sicuro di mettere gli invii ai posti giusti...
dove posso guardare un po di doc su bash scripting (uso delle virgolette,
delle ; .....)


 adesso gli errori peggiorano...
#!/bin/bash
for i in *.ogg;
do
name=$(echo "$i" | sed s/ogg/mp3/)
oggdec "$i" -o - | lame - -mj -h -v -V2 -b32 -B320 >  "$name"
done


Bodo wrote:
grazie mille questo va da dio
io ieri sono riuscito a farne uno che funziona abbastanza anke se ha bisogno
di un sacco + di spazio di lavoro e non tratta "bene" le estensioni... se
ti può interessare:
#!/bin/bash
find . -iname "*.ogg" -exec oggdec {} \;
find . -iname "*.wav" -exec lame {} -mj -h -v -V2 -b32 -B320 \;
find . -iname "*.wav" -exec rm {} \;


 find . -iname "*.ogg" -exec oggdec {} \;
La fortuna e' che oggdec e lame hanno un nome di default per il file di
output, altrimenti diventava piu' complicato.
