From b61f6a5466a8797a7268ee57d5dc5610e5b904c1 Mon Sep 17 00:00:00 2001 From: Calvin Morrison Date: Thu, 8 Sep 2022 17:18:31 -0400 Subject: magic renamer. used initially for recovering backed up files without extensions --- magic-renamer.pl | 64 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 64 insertions(+) create mode 100644 magic-renamer.pl diff --git a/magic-renamer.pl b/magic-renamer.pl new file mode 100644 index 0000000..12a85aa --- /dev/null +++ b/magic-renamer.pl @@ -0,0 +1,64 @@ +# sometimes you just get unnamed files +# sometimes you don't, count yourself lucky +# +# but if you do not fear, libmagic is here. +# +# +# +# File recovery, snappy-fix, whatever +# +# perl ./magic-renamer.pl $input_dir $output_dir +# +# magic renamer will take files regardless of extension +# and copy them into a dest folder with their respective +# real extensions. +# +# ex: +# +# input/1a915afe2 <- this is a recovered file... it's really a jpg +# input/42ae2bce4 <- this is a recovered file... it's really an svg +# +# result +# +# output/1a915afe2.png +# output/42ae2bce4.svg +use File::LibMagic; +use File::Copy; +opendir my $DIR, $ARGV[0] or die "Cannot open directory: $!"; + +my $magic = File::LibMagic->new; +while( ($filename = readdir($DIR))) { + my $source = $ARGV[0] . '/' . $filename; + my $dest = $ARGV[1] . '/' . $filename; + + my $info = $magic->info_from_filename($source); + if($info->{description} =~ /SVG/) { + print "copy to $dest.svg\n"; + copy($source, $dest . ".svg"); + } + elsif($info->{description} =~ /JPEG/) { + print "copy to $dest.jpg\n"; + copy($source, $dest . ".jpg"); + } + elsif($info->{description} =~ /GIF/) { + print "copy to $dest.gif\n"; + copy($source, $dest . ".gif"); + } + elsif($info->{description} =~ /PNG/) { + print "copy to $dest.png\n"; + copy($source, $dest . ".png"); + } + elsif($info->{description} =~ /RIFF/) { + print "copy to $dest.webp\n"; + copy($source, $dest . ".webp"); + } + elsif($info->{description} =~ /MP4/) { + print "copy to $dest.mp4\n"; + copy($source, $dest . ".mp4"); + } + else { + print "ignoring $source\n"; + } + +} + -- cgit v1.2.1