On Fri, 1 Dec 2006 10:25:03 +0100 "Marco Ciampa" <ciampix@xxxxxxxxx> wrote: > Dovrei fare un elenco di file, controllare quelli che hanno caratteri > accentati nel nome e rinominarli sostituendo le accentate con > caratteri ascii e i caratteri che non riconosco con qualcos'altro. > Qual'è il metodo più semplice secondo voi? > > Elenco file: > > ls|while read i > do > #conversione / sostituzione caratteri con tr? perl? bo? > #nella variabile $y > mv $i nuovopercorso/$y > done > > banale? Non sono un esperto di tr e chiamare in causa il perl per > questa cosa mi sembrava eccessivo... un bel po di tempo fa ho trovato in giro questo script: ------------- #!/usr/bin/perl -w use File::Find; use strict; #die "usage: nospace dir[s]\n" unless @ARGV; my %ext; find(\&remspaces, '.'); sub remspaces { return if ($_ eq '.'); return if ($_ eq '..'); (my $new = $_) =~ tr/a-zA-Z0-9_.-/_/c; my $duplicate = ($new ne $_ and -e $new); my $try = $new; $ext{"$File::Find::dir/$try"}++ if $duplicate; while (my $count = $ext{"$File::Find::dir/$new"}++) { (my $with_num = $new) =~ s/(?=\.|$)/_$count/; $new = $with_num, last if not -e $with_num; } $ext{"$File::Find::dir/$try"}-- if $duplicate; rename $_ => $new or warn "can't rename $_ to $new: $!"; } ------------- che sostituisce tutti i caratteri "strani" o comuqneu che possono dar fastidio in bash o simili con degli _ Provalo, magari va bene. ciao -- Andrea Lusuardi - UoVoBW Registered Linux User #364578 http://uovobw.homelinux.org/ - GPG: 313C1073 "Fire!", Exclamation mark; "Fire!", Exclamation mark; "Help me!", Exclamation mark.