#!/usr/bin/env perl use strict; use warnings; use Path::Tiny; my $dir = shift or die 'No directory given'; my $dir_path = path($dir); unless($dir_path->is_dir){ die "$dir is not a directory"; } my %files_of; foreach my $file_path ($dir_path->children){ my $digest = $file_path->digest; # default is SHA-256 #my $digest = $file_path->digest('MD5'); # use this if you want MD5 push @{$files_of{$digest}}, $file_path->basename; } foreach my $digest (keys %files_of){ my @files = @{$files_of{$digest}}; if( scalar @files > 1){ print join(', ', @files), " are duplicates.\n"; } } exit;