https://git.spwbk.site/swatson/misc-scripts/raw/master/strip_filename.pl
___________________________________
#!/usr/bin/env perl

# Stupid script to strip trash formatted filenames

use strict;
use warnings;

my @inputs = @ARGV;

sub strip_filename($) {

       my $filename = shift;
       my @chars = split("",$filename);
       my $new_filename;
       open(my $fh, ">>", \$new_filename) or die "Couldn't open new_filename var\n";
       foreach my $char ( @chars ) {
               if ( $char =~ m/\s/ ) {
                       next;
               } elsif ( $char =~ m/\(|\)|\\|\'|\$|\!|,|\[|\]/ ) {
                       next;
               } else {
                       print $fh $char;
               }
       }
       close $fh;
       return $new_filename;
}

sub construct_mv_fn($) {

       my $filename = shift;
       my @chars = split("",$filename);
       my $new_filename;
       open(my $fh, ">>", \$new_filename) or die "Couldn't open new_filename var\n";
       foreach my $char ( @chars ) {
               if ( $char eq " " ) {
                       print $fh "\\$char";
               } else {
                       print $fh $char;
               }
       }
       close $fh;
       return $new_filename;

}

sub rename_file($$) {

       my ( $old_filename, $new_filename ) = @_;
       my $mv_filename = construct_mv_fn($old_filename);
       my $cmd = "mv '$mv_filename' $new_filename";
       print "$cmd\n";
       #system("$cmd");

}

foreach my $input ( @inputs ) {
       if ( ! -f $input ) {
               print "File at path $input doesn't look like a file\n";
               exit 1;
       }
       print "$input\n";
       my $new_filename = strip_filename($input);
       print "$new_filename\n";
       rename_file($input,$new_filename);
}