Newsgroup: it.comp.os.linux.iniziare
Titolo: scriptino in bash

Salve ragazzi! 
Sto tentando di fare uno script in bash che mi prenda tutti gli mp3 in una
cartella e me li resampli con lame.
la script suona circa cosi': 
#! /bin/sh -f
lame --mp3input --resample 22 -b 96 *.mp3 %d.mp3
il problema e' che non so come darli in input tutti i file della cartella;
in questo modo non funziona e dice: 
[michi@localhost mp3up]$ sampledown4CF
Could not find "*.mp3".
Che in effetti e' abbastanza vero, dato che non esiste nessun file
chiamato *.mp3; ma * non era forse un carattere jolly? 
Help, aiut!! 
Grazie 
Mic

 chiamato *.mp3; ma * non era forse un carattere jolly? 
Lo '*' e' un carattere 'jolly', ma l'espansione dei caratteri viene
fatta dalla shell (bash o chi per essa) e non dal programma.
Usa find per richiamare lame. man find per maggiori info.
hint: -exec
Davide
-- 
My pen is at the bottom of a page,
Which, being finished, here the story ends;
'Tis to be wished it had been sooner done,
But stories somehow lengthen when begun.
		-- Byron

 
#!l/bin/sh
for i in `ls /cartella/`; do
	lame --mp3input --resample 22 -b 96 $i %d.mp3
done
Andrea

 for i in `ls /cartella/`; do
Ocio ai file con spazi nel nome.
Davide
-- 
Q:  How many Zen masters does it take to screw in a light bulb?
A:  None.  The Universe spins the bulb, and the Zen master stays out
    of the way.

 lame --mp3input --resample 22 -b 96 *.mp3 %d.mp3
Toglio l'opzione -f, che impedisce il pathname expansion di *.
Ciao,
 ___ 
/_|_\  Umberto Salsi
\/_\/  
www.icosaedro.it

 done
Funziona, ma come dice Davide ci sono problemi con i nomi dei file
contenenti gli spazi... 
Esiste un programma che rinomina di massa i files sostituendo gli spazi
con altri caratteri? 
Grazie comunque!
Mic

 con altri caratteri? 
Uno script molto artigianale da lanciare nella directory dei file con
spazi:
#!/bin/sh
for i in `ls -1|sed 's/ /_/g'`
do
mv "`echo $i|sed 's/_/ /g'`" $i
done
-- 
One really funny quote

 contenenti gli spazi...
]zac[
Ti consiglio caldamente di leggere 'abs-guide' o almeno qualche how-to o
faq.
Un indizio per una delle varie strade (non è la migliore, ma la più
istruttiva):
Da man bash:
If IFS is unset, the parameters are sepa-
              rated by spaces.  If IFS is  null,  the  parameters  are 
joined
              without intervening separators.

 
for a in *; do b=`echo "$a" | tr " " "_"` && mv "$a" "$b">/dev/null
2>&1;done;
-- 
L|E|L|E|

 for a in *; 
Se ci sono degli spazi nel nome (come il problema implica), questo
for non funziona.
Davide
-- 
This novel is not to be tossed lightly aside, but to be hurled with
great force.
		-- Dorothy Parker

 for non funziona.
Sicuro? Mi sembra che la bash quando espande sistemi anche i caratteri
speciali.
See you,
	Silver Drake
-- 
http://www.silverdrakenet.it
Australian Largest Bed, coverband extraordinaire
Live il 19 Agosto alla Festa della Birra di Granarolo Faentino
http://www.nottambula.com
 per indicazioni

 speciali.
esatto, quindi il for diventera' una cosa come
for a in questo e\' un singolo file; do
  ecc ecc
e quindi nel ciclo $a avra' il valore di "questo", "e'", "un", "singolo",
"file", e non "questo e' un singolo file"
-- 
§          ZeD           §
§       27/08/2004       §
§       S. Monica        §
§ Now listening: Nothing §