#!/usr/bin/perl -w#!/usr/bin/perl -w use strict; # Simple script to identify file types and rename stuff accordingly # Also my first script to use strict; ;D my $bufferlength = 10; my %signatures = ( "zip" => "PK\x03\x04", "rar" => "Rar!", "mp3" => "\xFF[\xF0-\xFF]", "gz" => "\x1f\x8b\x08", "tar" => "\x66\x69\x78\x6e", ); while (my $filename = shift) { open( FILE, "< $filename" ) or die "Can't open $filename : $!\n"; binmode FILE; # just to be on the safe side my $read = read( FILE, my $buffer, $bufferlength ) or die "Can't rea +d from $filename : $!\n"; close FILE; # if the file was too small, skip it next if $read != $bufferlength; foreach (keys %signatures) { if ($buffer =~ /^$signatures{$_}/) { if ($filename !~ /$_$/i) { + my $newname = $filename . "." . $_; print "$filename -> $newname\n"; rename( $filename, $newname ) or die "Can't rename $filename t +o $newname : $!\n" }; last; }; + }; };
In reply to File identifier by Corion
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |