Re: Tool to compare directories and delete duplicate files from one directory
- Reply: Paul Procacci : "Re: Tool to compare directories and delete duplicate files from one directory"
- Reply: David Christensen : "Re: Tool to compare directories and delete duplicate files from one directory"
- In reply to: Paul Procacci : "Re: Tool to compare directories and delete duplicate files from one directory"
- Go to: [ bottom of page ] [ top of archives ] [ this month ]
Date: Fri, 05 May 2023 04:06:25 UTC
On 5/5/23 04:36, Paul Procacci wrote: > #!/usr/bin/env perl > > use strict; > use warnings; > > sub msgDie > { > my ($ret) = shift; > my ($msg) = shift // "$0 dir_base dir\n"; > print $msg; > exit($ret); > } > > msgDie(1) unless(scalar @ARGV eq 2); > > my $base = $ARGV[0]; > my $dir = $ARGV[1]; > > msgDie(1, "base directory doesn't exist\n") unless -d $base; > msgDie(1, "source directory doesn't exist\n") unless -d $dir; > > opendir(my $dh, $dir) or msgDie("Unable to open directory: $dir\n"); > while(readdir $dh) > { > next if($_ eq '.' || $_ eq '..'); > next if(! -f "$base/$_"); > > my ($ref) = (stat("$base/$_"))[7]; > my ($src) = (stat("$dir/$_"))[7]; > unlink("$dir/$_") if($ref == $src); > } To start with this is the directory structure: ls -lhR /tmp/test1 total 1 drwxr-xr-x 2 root wheel 3B May 5 04:57 dupdir1 drwxr-xr-x 2 root wheel 3B May 5 04:57 dupdir2 /tmp/test1/dupdir1: total 1 -rw-r--r-- 1 root wheel 8B Apr 30 03:17 dup /tmp/test1/dupdir2: total 1 -rw-r--r-- 1 root wheel 7B May 5 03:23 dup1 ls -lhR /tmp/test2 total 1 drwxr-xr-x 2 root wheel 3B May 5 04:56 dupdir1 drwxr-xr-x 2 root wheel 3B May 5 04:56 dupdir2 /tmp/test2/dupdir1: total 1 -rw-r--r-- 1 root wheel 4B Apr 30 02:53 dup /tmp/test2/dupdir2: total 1 -rw-r--r-- 1 root wheel 7B Apr 30 02:47 dup1 So what I want to happen is the script to recurse from the top level directories test1 and test2 then expected behavior should be to remove file dup1 as dup is different between directories. I ran the script and again it didn't produce any output? ./test.pl /tmp/test1 /tmp/test2 I'm not sure if I need any other perl module? It is installed: p5-ExtUtils-Config-0.008_1 Wrapper for perl configuration perl5-5.32.1_3 Practical Extraction and Report Language I have many p5- modules too installed but maybe I don't have the right ones to run the script?