strip_filename.pl 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
  1. #!/usr/bin/env perl
  2. # Stupid script to strip trash formatted filenames
  3. use strict;
  4. use warnings;
  5. my @inputs = @ARGV;
  6. sub strip_filename($) {
  7. my $filename = shift;
  8. my @chars = split("",$filename);
  9. my $new_filename;
  10. open(my $fh, ">>", \$new_filename) or die "Couldn't open new_filename var\n";
  11. foreach my $char ( @chars ) {
  12. if ( $char =~ m/\s/ ) {
  13. next;
  14. } elsif ( $char =~ m/\(|\)|\\|\'|\$|\!|,|\[|\]/ ) {
  15. next;
  16. } else {
  17. print $fh $char;
  18. }
  19. }
  20. close $fh;
  21. return $new_filename;
  22. }
  23. sub construct_mv_fn($) {
  24. my $filename = shift;
  25. my @chars = split("",$filename);
  26. my $new_filename;
  27. open(my $fh, ">>", \$new_filename) or die "Couldn't open new_filename var\n";
  28. foreach my $char ( @chars ) {
  29. if ( $char eq " " ) {
  30. print $fh "\\$char";
  31. } else {
  32. print $fh $char;
  33. }
  34. }
  35. close $fh;
  36. return $new_filename;
  37. }
  38. sub rename_file($$) {
  39. my ( $old_filename, $new_filename ) = @_;
  40. my $mv_filename = construct_mv_fn($old_filename);
  41. my $cmd = "mv '$mv_filename' $new_filename";
  42. print "$cmd\n";
  43. #system("$cmd");
  44. }
  45. foreach my $input ( @inputs ) {
  46. if ( ! -f $input ) {
  47. print "File at path $input doesn't look like a file\n";
  48. exit 1;
  49. }
  50. print "$input\n";
  51. my $new_filename = strip_filename($input);
  52. print "$new_filename\n";
  53. rename_file($input,$new_filename);
  54. }