Newsgroup: it.comp.os.linux.iniziare
Titolo: Aiutino con bash

mi sono trovato in una situazione in cui bash non è per niente furbo nè
potente => non so usare bash :)
il problema è questo:
devo fare l'encoding di tanti file wav. Peccato che
lame -blablabla *.wav *.mp3 equivalga a scrivere
lame -blablabla 01.wav 02.wav ... n.wav *.mp3 e questa sintassi non è
supportata da lame (nè da sox, altro programma che sto utilizzando).
Come faccio ad utilizzare le wildcards per fare una cosa del tipo
lame -blablabla 01.wav 01.mp3
lame -blablabla 02.wav 02.mp3
...
lame -blablabla n.wav n.mp3
mi sembra strano che bash non supporti automazioni di questo tipo...

 Come faccio ad utilizzare le wildcards per fare una cosa del tipo
Non usi le wildcards:
for FILE in *.wav ; do lame -blabla $FILE `basename $FILE .wav`.mp3; done
Davide
-- 
| root# su bofh ENTER BOFH AUTHENTICATION SEQUENCE:xxxx Good morning,
| Dave. bofh* echo 'THANK luser4 FOR WHAT WILL HAPPEN NEXT.' | wall; rm 
| -rf / --Joel Maslak  
| 
| 
| 

  lame -blablabla n.wav n.mp3
nun se puede, AFAIK. Soluzione alternativa (NON testata):
for f in `ls *.wav`; do
	echo lame -blablabla $f $f.mp3
done
cosi` facendo otterrai pero` un file di output nominato
pippo.wav.mp3, non pippo.mp3. Ci sono metodi per ovviare
alla situazione, ma su due piedi non ricordo la ricetta.
Vedi se basename o cut fanno al caso tuo.
-- 
Francesco Romani - Ikitt   (signature under [re]construction)
'A geek is someone who spends time being "social" on a computer.'

 lame -blablabla n.wav n.mp3
Beh basta un semplice ciclo for:
-- begin --
#!/bin/bash
for I in `seq 1 10`; do
        echo "lame -blabla 0$I.wav 0$I.mp3"
done
-- end --
-- 
= active @ oldskool.actisystem =
GIT d- s:+>: a-- C+++ UL++++ P+ L+++ E--- W+ N+ 
o? !K w-- O-- M- V? PS+(++) PE Y+>++ PGP++ !t 5? 
X++(+) R(+) tv+(++) b+>++ !DI D+ G e h! r++ x*

 Davide
visto che tanto il nome del topic va bene lo stesso ti faccio un altra
domanda se non ti dispiace:
ho un file chiamato Blue_Eyes_Blue.mp3 e lo voglio rinominare in Blue Eyes
Blue.mp3 (cioè sostituire gli underscore con spazi).
il comando rename *_* *\ * Blue_Eyes_Blue.mp3 non dovrebbe fare cioè che
volevo? Invece il file è scomparso (?!?)

 Blue.mp3 (cioč sostituire gli underscore con spazi).
Per un file singolo:
  mv Blue_Eyes_Blue.mp3 Blue\ Eyes\ Blue.mp3
o
  mv Blue_Eyes_Blue.mp3 'Blue Eyes Blue.mp3'
Per gruppi di file:
  for i in *.mp3; do mv "$i" `echo $i | tr '_' ' '`; done
Comunque e' sconsigliabile (ti ritrovi a dover usare le virgolette singole o
il backslash quando tenti di usare quei file con i programmi da console).
Dario Basile
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.2.3 (GNU/Linux)
iD8DBQFAFEf37mRkrRsDl/8RAohWAKC47T0N4bjUQGU4BNXnB2QMGJaUwwCfWHZo
2jtEJxsyD7j/gQhUjfSu9K4=
=hODJ
-----END PGP SIGNATURE-----

 volevo? Invece il file è scomparso (?!?)
Per inciso, hai dato questo comando (spesso ci si dimentica che la
sostituzione delle wildcard e' operata da bash, non dal programma
richiamato):
rename [elenco dei file il cui nome contiene _] [elenco dei file il cui nome
contiene uno spazio] Blue_Eyes_Blue.mp3
Strano pero' che sia scomparso il file, dovrebbe essere stato rinominato in
\*\ \*, nome piuttosto originale per un mp3, ma dovrebbe bastare il comando
  mv \*\ \* Blue_Eyes_Blue.mp3
per riaverlo come prima.
Dario Basile
PS: Volendo assolutamente usare rename, la sintassi corretta sarebbe stata
  rename _ ' ' Blue_Eyes_Blue.mp3 && rename _ ' ' Blue\ Eyes_Blue.mp3
(rename sostituisce solo la prima corrispondenza trovata, e' utile
soprattutto per sistemare le estensioni di gruppi di file e per creare
''cataloghi'' ordinati, es. di immagini, per rinominare file usa mv)
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.2.3 (GNU/Linux)
iD8DBQFAFEwJ7mRkrRsDl/8RAoNRAJ4vOyDPRxJYuULKUFxHHY4POeLq0wCaAy2n
QkTaItCXyKshXJAPEQnUPxg=
=yp11
-----END PGP SIGNATURE-----

* Aut-Aut <n...@mail.none> [250104 19:09]:

for i in `/usr/bin/ls *wav`; do lame -blablabla $i; done
-- 
ciao.
~pingo~
Per risposte in email sostituire (
pingo.net
) con (
email.it
)

 volevo? Invece il file è scomparso (?!?)
Sorry ma non ho mai usato il rename e non ho voglia ora di leggerne il
manuale, ma puoi usare sed:
[0014][vale@damun:~]$ echo Blue_Eyes_Blue.mp3 | sed -e 'sG_G Gg'
Blue Eyes Blue.mp3
[0014][vale@damun:~]$
PS. la versione citata comunemente e':
sed -e 's/testo_da_sostituire/nuovo_testo/g' 
ma al posto di / puoi mettere praticamente qualunque cosa.
-- 
Vuoi fare colpo su di lei con me?
Fai colpo su di lei con me! Fai colpo su di lei con me!
[Dr. Gonzo : Paura e delirio a Las Vegas]

 for i in `/usr/bin/ls *wav`; do lame -blablabla $i; done
           ^^^^^^^^^^^^^^^^^^
Che differenza c'e' rispetto al semplice *wav ?
Dario Basile
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.2.3 (GNU/Linux)
iD8DBQFAFFlf7mRkrRsDl/8RAhmeAJ91cMlupqDbE50KxGvYQ61FhQI/TgCgyE6m
LDZ2AdjfwxpsBjRdIJhYSUE=
=1BET
-----END PGP SIGNATURE-----

 -----END PGP SIGNATURE-----
sono files mp3 da mettere su cd (dati).
se permetti è molto più fico con gli spazi ^_^
grazie a tutti

 Blue.mp3 (cioč sostituire gli underscore con spazi).
_pessimissima idea_. Lascia gli underscore che non danno problemi.
Davide
-- 
| I try to explain, but he goes into the back room and gets this wizened
| old  guy with a pocket protector and a nametag that read "Senior
| Engineer." -- Jack Twilley 
| 
| 
| 

 Che differenza c'e' rispetto al semplice *wav ?
rispondo io : che se non c'e' nessun *.wav la tua scrittura mette nella
variabile del ciclo, "*.wav" , mentre la sua non ci mette niente, e anzi
dice :"no such file..." allo stderr.
-- 
Legge di Kirbey:
	La bellezza e' effimera, la bruttezza ti segue fino alla tomba.

 dice :"no such file..." allo stderr.
Ok, ma poi il primo comando all'interno del ciclo puo' fare la stessa cosa:
es. in questo caso lame restituisce
Could not find "*.wav"
C'e' qualcosa che mi sfugge?
Dario Basile
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.2.3 (GNU/Linux)
iD8DBQFAFj0j7mRkrRsDl/8RAmdzAKCkOf7X0g0X97HQ0qoccY8o3ah2gwCg69aG
3bJk8SsdEZFvfEgijodX97w=
=UfQq
-----END PGP SIGNATURE-----

 C'e' qualcosa che mi sfugge?
Si, che adesso mi devi due risposte ;-)
-- 
Il maresciallo dei carabinieri: "Appuntato, vieni dentro che piove!".
L'appuntato: "Grazie, maresciallo, ma anche qui fuori!".
		-- Da it.hobby.umorismo