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

UtilPerlSkripteSubForm edit

Titel Wie erstelle ich eine MD5 Pruefsumme bei Dateien?
Autor rambo
Bereich PerlSkripteDateien
Topic revision: 2006-09-28, DocSnyder
 
Bitte die NutzungsBedingungen beachten.
Bei Vorschlägen, Anfragen oder Problemen mit dem PerlCommunityWiki bitten wir um WebBottomBarExample">Rückmeldung.