Viewing file: uniqleaf.pl (1.29 KB) -rwxr-xr-x Select action/file-type: (+) | (+) | (+) | Code (+) | Session (+) | (+) | SDB (+) | (+) | (+) | (+) | (+) | (+) |
eval '(exit $?0)' && eval 'exec perl -S $0 ${1+"$@"}' && eval 'exec perl -S $0 $argv:q' if 0; use strict;
# Check filesystem tree (or union of several trees) for unique # leaf names; useful for spotting ambiguities that path-searching # programs could trip over.
# For each non-unique leaf name found, it prints out "ls" and "md5" # information for each candidate file.
# Martyn Johnson maj@cl.cam.ac.uk # University of Cambridge Computer Lab # Cambridge UK
my $mdprog = "md5sum"; # Set to command name of "md5" program, or # null string if you don't have it.
my $sep = "\000"; my %map;
foreach my $dir (@ARGV) { open (FIND, "find $dir -type f -print |") || die ("open failed: $!");
while (<FIND>) { chop; (my $leaf = $_) =~ s-.*/--; $map{$leaf} .= "$_$sep"; }
close FIND; }
my $md = "";
foreach my $leaf (sort keys %map) { my $files = $map{$leaf}; chop $files; my @paths = split($sep, $files); if ($#paths > 0) { for (my $i=0; $i<=$#paths; $i++) { my $path = $paths[$i]; my $info = `ls -il "$path"`; chop $info; $info =~ s/\s+/ /g; if ($mdprog) { $md = `$mdprog "$path"`; chop $md; $md =~ s/^.*= / /; } $info =~ s/ ([^ ]+$)/$md $1/; print ("$info\n"); } print ("\n"); } }
|