[relug] Via gli spazi

  • From: Daniele Menozzi <menoz@xxxxxx>
  • To: relug@xxxxxxxxxxxxx
  • Date: Sat, 2 Apr 2005 13:41:38 +0200

Eccovi un bellissimo programma in perl, che fa cio' che ho sempre
desiderato:
avete presente quei file con nomi tutti pieni di spazi, parentesi, accenti, 
eccetera?
Bene, questo scriptino rinomina automaticamente i suddetti file, per la
gioia della riga di comando. Basta farlo partire all'interno di una
cartella, e rinomina tutti i file contenuti.

Ciao
        -z

#!/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: $!";
} 

-- 
                      Free Software Enthusiast
                 Debian Powered Linux User #332564 
                     http://shine.homelinux.org

Other related posts: