Wie erstelle ich eine MD5 Pruefsumme bei Dateien?
Name
md5Filesum
Aufgabe
Anzeige der MD5-Prüfsummen der Dateien im aktuellen Verzeichnis.
Aufruf mit Parametern
md5Filesum
Skript
#!perl
# ------------------------------------------------------------------
# loaded modules
# ------------------------------------------------------------------
#
# (c) 2006 rambo
#
use strict;
use warnings;
use Digest::MD5;
use Cwd;
use File::Find;
use threads;
use threads::shared;
#
#
# ------------------------------------------------------------------
# start threads
# ------------------------------------------------------------------
my $StopDotPrintFlag : shared;
sub DotPrintThread
{
my ($Interval, @Trash) = @_;
use IO::Handle;
autoflush STDOUT 1;
my $IntervalCount=0;
while ($StopDotPrintFlag != 2)
{
if ($StopDotPrintFlag == 1)
{
print STDOUT ".";
}
$IntervalCount++;
sleep $Interval;
}
return $IntervalCount;
}
#
#
# ------------------------------------------------------------------
# start programm
# ------------------------------------------------------------------
my $dir = getcwd;
my @files;
find(\&get_dir,$dir);
$StopDotPrintFlag = 0;
my $Interval = 1;
my $DotPrintThread = threads->new(\&DotPrintThread, $Interval);
$StopDotPrintFlag = 1;
for my $file(@files)
{
my $md5 = Digest::MD5->new;
open FILE, $file;
binmode(FILE);
while(<FILE>) { $md5->add($_); }
my $digest = $md5->hexdigest;
close FILE;
open(my $fh, ">>md5_check.txt") or die $!;
print $fh "\nDigest is $digest for $file\n";
close $fh;
}
$StopDotPrintFlag = 2;
my $NumberOfPrintedDots=$DotPrintThread->join;
print "\napplied time was ".$NumberOfPrintedDots*$Interval." seconds\n";
sub get_dir
{
push(@files,$File::Find::name) if(-f $File::Find::name);
}
1;
Ergänzungen, Kommentare
GwenDragon - 14 Jul 2003 - erstellt
DocSnyder - 28 Sep 2006 - oder so:
perl -MDigest::MD5 -le "open(FH, shift);binmode(FH);print Digest::MD5->new->addfile(*FH)->hexdigest" dateiname
DocSnyder - 28 Sep 2006 - oder so (für Zeichenketten):
perl -MDigest::MD5 -e "print Digest::MD5::md5_hex('zeichenkette')"
Kommentare werden am besten in folgender Form vorgenommen, damit
sie im Inhaltsverzeichnis angezeigt werden (natürlich ohne das <verbatim>):
--- ### Main.### - 14 Jul 2003 - Betreff