feature(util script): Util script for renaming of files added.
This commit is contained in:
parent
d625fbe8e3
commit
caf8fec5ac
58
utils/renamer.pl
Executable file
58
utils/renamer.pl
Executable file
@ -0,0 +1,58 @@
|
||||
#!/usr/bin/env perl
|
||||
|
||||
use strict;
|
||||
use warnings;
|
||||
|
||||
my ($fromdir, $renamefile, $todir) = @ARGV;
|
||||
|
||||
sub usage {
|
||||
die "usage: $0 [fromdir] [renamefile] [todir]\n
|
||||
takes files from [fromdir], renames according to the json-map in
|
||||
[renamefile] and writes the files to [todir].
|
||||
old filenames are used as keys; new filenames as value\n";
|
||||
}
|
||||
|
||||
usage() unless $fromdir and $renamefile and $todir;
|
||||
usage() unless -d $fromdir;
|
||||
usage() unless -f $renamefile;
|
||||
|
||||
mkdir $todir;
|
||||
|
||||
my %did = ();
|
||||
|
||||
my @errNex = ();
|
||||
|
||||
my $fh = undef;
|
||||
open($fh, '<', $renamefile) or die "Cannot read '$renamefile', because: $!";
|
||||
my $cont = join '', <$fh>;
|
||||
close $fh;
|
||||
if($cont!~m#^\s*\{(.*)\}\s*$#s) { die "'$renamefile' not in an expected format; it should be an json-object" }
|
||||
my $core = $1;
|
||||
|
||||
while($core=~s#^\s*,?\s*"([^"/]+)"\s*:\s*"([^"/]+)"##) {
|
||||
my ($from, $to) = ($1, $2);
|
||||
my $pfrom = "$fromdir/$from";
|
||||
my $pto = "$todir/$to";
|
||||
if(-e $pfrom) {
|
||||
print "Renaming '$pfrom' to '$pto'\n";
|
||||
system("cp", $pfrom, $pto);
|
||||
$did{$from} = 1;
|
||||
} else {
|
||||
push @errNex, $from
|
||||
}
|
||||
}
|
||||
|
||||
for(@errNex) {
|
||||
warn "Could not rename non-existent file: $_\n";
|
||||
}
|
||||
|
||||
die "Syntax error in [renamefile], could not process everything!" if $core!~m#^[\s*,]*$#;
|
||||
|
||||
my $dh = undef;
|
||||
opendir($dh, $fromdir) or die "Could not read dir '$fromdir', because: $!";
|
||||
while(my $filename = readdir($dh)) {
|
||||
next if $filename=~m#^\.\.?$#;
|
||||
warn "Did not touch not mentioned file '$filename'\n" unless $did{$filename};
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user