[Tech] Sostituire gli spazi bianchi con underscore (fwd)

Franco Bagnoli bagnoli@dma.unifi.it
Mar 29 Giu 2004 22:51:09 CEST


ma è arrivata il lista? 

-- 
Franco Bagnoli (franchino) <bagnoli@dma.unifi.it> 
virtual location: Dipartimento di Energetica "S. Stecco"
ultra-virtual affiliation: Centro Dinamiche Complesse (CSDC-Firenze)
real location: Dip. Matematica Applicata "G. Sansone", Universita' Firenze,
Via S. Marta, 3 I-50139 Firenze, Italy. Tel. +39 0554796422, fax: +39 055471787

---------- Forwarded message ----------
Date: Tue, 29 Jun 2004 18:13:16 +0200 (CEST)
From: Franco Bagnoli <bagnoli@dma.unifi.it>
To: Discussioni tecniche <tech@firenze.linux.it>
Subject: Re: [Tech] Sostituire gli spazi bianchi con underscore

On Tue, 29 Jun 2004, paolo palmerini wrote:

> 
> On 06/29/04 15:12:34, Mattia Brunetti wrote:
> > Sono nuovo e' da poco che utilizzo linux e la bash :D
> > 
> > Voglio sotituire gli spazi bianchi nel nome di tutti i file di una
> > directory
> > con l'underscore o altro carattere con uno script in bash.
> > Non vorrei scomodare il siglor perl :)
> >
> 
> rename "s/\s/_/g" *.*

a parte che casomai agisce solo sui file con estensione, non mi sembra che 
funzioni....

io proverei un 

for file in *; do mv \'$file\' ${file// /_/}; done;

solo che non funziona perché i file senza spazio non vengono testati.

sono riuscito con 

find . -name '* *' -exec bash -c 'a="{}"; mv "$a"  ${a/ /_}' \;

(dovrebbe funzionare anche con un for) 

che quanto a incomprensibilità mi sembra peggio del perl 

perl -e 'foreach $file (@ARGV) {($newfile = $file) =~ s/ /_/g; 
rename $file, $newfile if $file ne $newfile}' *



-- 
Franco Bagnoli (franchino) <bagnoli@dma.unifi.it> 
virtual location: Dipartimento di Energetica "S. Stecco"
ultra-virtual affiliation: Centro Dinamiche Complesse (CSDC-Firenze)
real location: Dip. Matematica Applicata "G. Sansone", Universita' Firenze,
Via S. Marta, 3 I-50139 Firenze, Italy. Tel. +39 0554796422, fax: +39 055471787






Maggiori informazioni sulla lista flug-tech