[gl-como] modifica nomi files - (simile a "blank to underscore" ma non so come fare)

Pirla the.pirla@flashnet.it
Mar 20 Set 2005 21:14:38 CEST


Il dom, 2005-09-18 alle 23:04, Pietro Bertera ha scritto:
> On dom, 2005-09-18 at 22:13 +0200, Cloud wrote:
> > Facciamo che io in una cartella ho i seguenti files:
> 
> 
> #!/bin/bash
> for a in $1/*
> do
>     b=`echo $a |sed -e s/à/a\'/g -e s/è/e\'/g -e s/ì/i\'/g -e s/ò/o\'/g
> -e s/ù/u\'/g`
>     if [ "$a" != "$b" ]
>     then
>         c=`echo $a | sed -e s/\ /\\ /g`
>         d=`echo $b | sed -e s/\ /\\ /g`
>         mv "$c" "$d"
>     fi
> done
> 
Script ben fatto, ma ci sono due piccoli problemi.
Il primo è che le righe che iniziano con c= e d= non sembrano essere
necessarie con la bash perché il comando mv è scritto con i doppi apici.
Il trailing (mi sembra si dica così) dello spazio non è necessario se il
nome file è racchiuso tra apici.

Inoltre non viene fatta alcuna verifica se il file destinazione esiste
già.

Ho fatto un paio di prove e togliendo le 2 righe sopra citate e
cambiando la riga successiva in
mv "$a" "$b" funziona.

Interessante anche il confronto delle due stringhe.
Non ho fatto alcuna prova sul possibile codice di ritorno di sed, ma
penso che si possa fare il check di quello invece che confrontare le due
stringhe.
Molto più carino, permette di interpretare eventuali errori del sed e di
sapere se è stata fatta una modifica alla stringa oppure no.
Più veloce in caso di modifica di tante righe.

Giusto per la cronaca lo script è utilizzabile con una piccolissima
modifica anche per elaborare un file riga per riga, invece che una
directory.

Finezze, ma è anche per animare un po' le conversazioni.

Inoltre non so per quale motivo, ma io preferisco in questi casi usare
il comando tr, per TRaslare un carattere in un altro (o una serie di
caratteri in un'altra serie), quando la cosa non è molto complicata.
Se invece devo per forza scriptare, allora preferisco usare molto di più
il Perl

________________________________________________________________________
-- 
Ciao
	Pirla

Per rispondere in E-mail the (punto) pirla (chiocciola) flashnet.it
*** un bacio ai pupi ***

---> Linux user since yesterday <---
--->     Linux User #389536     <---



Maggiori informazioni sulla lista gl-como