Il giorno Tue, 03 May 2011 12:27:00 +0200
Ivan tarozzi<ivan@xxxxxxxxxxxx> ha scritto:
No dai.... quella della mail privata era uno scherzo vero?!? non
vorrei che sembrassimo così avidi di birra e corti di braccino :D
Io ho inviato questa soluzione (?) in busta chiusa poco fa..., ma visto
che tanto sono recalcitrante alla birra :-) e il braccino è quello che
è... la mando in ml.
tanto fa fede il timbro postale!
Ciao,
Giovanni
Inizio messsaggio inviato:
Data: Tue, 3 May 2011 12:27:10 +0200
Da: Giovanni Pasini<gpasini@xxxxxxxxxxx>
A: Filippo Giunchedi<filippo@xxxxxxxxxxxx>
Oggetto: Re: [RiminiLUG-General] bash redirezione I/O PIPE e filtri
Ciao Filippo,
Il giorno Fri, 29 Apr 2011 20:54:56 +0100
Filippo Giunchedi<filippo@xxxxxxxxxxxx> ha scritto:
[i lettori mi scuseranno in anticipo se intervengo solo per fare il
rompiscatole! :)]
ci mancherebbe!
attenzione che la shell e' un oggetto alquanto insidioso e ci vuole
non poca attenzione a creare script robusti (la advanced bash shell
scripting guide che ti ha linkato Ivan contiene molti spunti).
Un esercizio interessante da fare per chi ci si vuole cimentare e'
provare il comando sopra per rinominare un file che contiene degli
spazi (per aiutarti usa l'opzione -x della shell).
Ad esempio:
touch 'foo bar.c.txt'
for i in *.c.txt; do echo mv $i $(basename $i .c.txt).c; done | bash
facendo così mi sembra funzioni (comunque trovata tempo fa in
rete per risolvere un problema con elenchi di dati contenuti in
file di testo da analizzare riga per riga, se non ricordo male...):
touch 'foo bar2.c.txt' 'foo bar.c.txt' 'foo_bar.c.txt' 'foo_bar2.c.txt'
IFS=$(echo -en "\n\b") #The Bash for loop splits using a whitespace
(space, tab or newline)
for i in *.c.txt; do echo mv \'$i\' \'$(basename $i .c.txt).c\'; done |
bash unset IFS
però se non ci sono file *.c.txt la riga esce così:
mv '*.c.txt' '*.c'
mv: impossibile eseguire stat di "*.c.txt": No such file or directory
filippo
Ciao,
Giovanni