Duplicat.csh



#  Look for duplicate files anywhere in a directory tree.

#  Copyright (c) 1990 by Hamilton Laboratories.  All rights reserved.

#  It works by first constructing the list of all the path names of every-
#  thing in the tree using the -r (recursive) option of ls.  The `...` part
#  is command substitution to paste that result into the foreach loop.  The
#  :gt operator means globally edit the list to trim each pathname down to
#  just the tail part; e.g., given "x\y\z.c", the tail is just "z.c".
#  (There are other pathname editing operators for grabbing just the directory
#  containing, everything except the extension, the fully-qualified name for
#  a relative pathname, etc.)
#  
#  The foreach loop writes each name out to the pipe, one per line.  (I've used
#  a calc statement to do the writing but you could also use an "echo $i".)
#  The sort obviously sorts all the lines alphabetically and uniq -d
#  command gives just the duplicates.
#  
#  The whole operation takes about 2 minutes to search an entire typical
#  (very full) 100 MB HPFS partition.

proc duplicat(startdir)
   local i
   foreach i (`ls -r $startdir`:gt) calc i; end | sort | uniq -d
end

duplicat $argv



Hamilton C shell | Free Updates | Free Demo Software | Win32 Training
Y2K | Customer Testimonials | On-line Hamilton C shell User Guide
Home | Email | Support | Company Profile | Distributors | Links



Copyright © 1997-2001 by Hamilton Laboratories. All rights reserved.
You are visitor number 597. This page was last modified August 14, 2001.