← Back to team overview

sslug-teknik team mailing list archive

Re: Fjern en tekst fra en masse filnavne?

 

Christoffer Kjølbæk wrote:
> Hvordan laver man lige et script der klare den? Jeg har kigget i man mv,
> men der skal jo nok noget uden om mv til at klare det?

Følgende er et perlscript jeg engang skrev for at rename filer,
med perl regulære udtryk, engang vil jeg måske tage mig sammen
til at adderer de nødvendige errorchecks for at undgå fatale fejl.

Du burde kunne løse dit problem med
Rename 's/_Bettina// ; s/_/ /g' *.ogg
men check lige på et par filer først!


#!/usr/bin/perl

if ($#ARGV == -1)
  {
   die <<EOL;
Syntax: Rename 'perl expression' <list of files>
Files are only renamed if the target files does not exist.

Examples:
        Rename 'tr/[A-Z]/[a-z]/' *    lowercase filenames
        Rename 's/jpe\$/jpg/' *.jpe    renames file extensions
        Rename 's/^/xxx/' *           prepending filenames with xxx
EOL
  }

my $regex=shift @ARGV;
foreach (@ARGV){ Rename($_); }

sub Rename
{
  my ($file)=(@_);
  my $str="\$_=\"$file\"; $regex ; return \$_";

  $file2=eval($str);

  if ($file ne $file2 && !(-e $file2) )
#different source and target and target does not exist.
   {
    print "$file -> $file2\n";
    rename $file, $file2;
   }
}


-- 
  Mvh. Carsten Svaneborg
http://gauss.ffii.org


Follow ups

References