^%                                  DUPFIL                                    %^
%                           by James A. Jarboe IV                            %

  The ^DUPFIL^ utility is designed to assist in the process of reclaiming
  disk space by locating ^duplicate files^ by ^file name^ or by ^hash code^
  totals. ^DUPFIL^ provides information about file duplications so that
  the system operator can make an intelligent decision on which duplicate
  file to remove to ^free^ up disk space.

  ^DUPFIL^ outputs to a file, a listing of ^identical^ or ^similar^ files.

  ^Identical^ files are those that have the same hash code totals and may
  or may not have the same file name.

  ^Similar^ files can be defined as those that have the same file name
  but may or may not have different hash code totals.

  Not all ^file duplication^ is bad. Depending upon your situation and
  system set up, it may be necessary to ^have^ duplicate files or
  different version of certain programs located in different accounts.
  The culprit we are after is the ^unnecessary^ duplication of files.
\
^% DUPFIL Utility %^                                             Page 2 of 13      

Usage:

    ^DUPFIL^ {listfile=} wild-spec(s) {switches}

Where:

  ^listfile^  =  The file specification where the resulting
               information is output is to. The default output is
               to the ^DUPFIL.LST^ file.

  ^wildspec^  =  The wildcard file specification(s) defines which
               files are to be examined (just like DIR)
               Examples:

               DSK0:*.LIT[1,4],DSK3:*.LIT[1,4]
               WIN0:*.WRT[]
               ALL:*.*[]
               DSK0:[], CPU2:DSK3:[]

  ^switches^  =  Optional operation switches as explained below.
\
^% DUPFIL Switches %^                                             Page 3 of 13    

The following switches are supported:

  /^BYNAME^   This ON/OFF switch controls file name and extension
            sensitivity.  The default is ON (/BYNAME) which will
            report files of the same or duplicate names. If this
            switch is turned OFF (/NOBYNAME), then the  /BYHASH
            switch is automatically turned on.

  /^BYHASH^   This ON/OFF switch controls hash total sensitivity
            which will report files with the same hash totals.
            When the /BYHASH switch is used, the /HASH switch is
            automatically implied. If this switch is turned OFF
            (/NOBYHASH), then the /BYNAME switch is automatically
            turned on.

  /^HASH^     In conjunction with /BYNAME, this switch controls
            file hash code sensitivity. This will output names of
            files that are duplicated along with the HASH total
            of each file. The default is /NOHASH (off). /HASH is
            automatically on with the /BYHASH option. The action
            of /BYNAME and /HASH are best described as a table:
^% DUPFIL Utility %^                                             Page 4 of 13    

            ^/BYNAME  /HASH     Action^
            ======   =======   ===============================
  Default->  ^ON^       OFF       Identically named files reported.
             ^ON       ON^        Same name files reported w/hash.
             OFF      OFF       Impossible combination.
             OFF      ^ON^        Files w/same hash code reported.

  /^VERSION^  This ON/OFF switch controls reporting of version
            numbers.  If /VERSION is specified, the version
            number of each reported file is given (if available).
            The default is /VERSION (On).

  /^BLOCKS^   This ON/OFF switch controls the reporting of file
            sizes (in blocks).  If /BLOCKS is specified, the size
            of each reported file in number of blocks will be
            given. The default is /BLOCKS (On).

  /^TOTAL^    Controls reporting of file and block totals at the
            end of each matching set and at the end of the
            listing. The default is /TOTAL (On).

^% DUPFIL Utility %^                                             Page 5 of 13    

  /^ASCEND^   Controls reporting sequence.  /ASCEND causes files of
            the same name or the same hash totals, to be reported
            in ascending size sequence. /NOASCEND causes files to
            be reported in descending size sequence. The default
            is /ASCEND (on).

  /^TYPE^     Controls the reporting of the file's type (^R^)andom or
            (^S^)equential).  The default is /TYPE (On). Use /NOTYPE to
            disable the reporting of file types. When the /TYPE
            switch is used, the letter ^R^ will be output for a
            Random file and the letter ^S^ will be output for a
            Sequential file.

  /^MIN:^n    Reports only those files of (^n^) size or greater. The
            default value is ^0^. Any file, with a Block size
            smaller than the indicated "^n^" size, will be ignored.
\
^% DUPFIL Utility %^                                             Page 6 of 13    

  /^MAX:^n    Reports only those files of (^n^) size or less. The
            default value is the largest possible size of any
            AMOS file (2.x extended directory limit). Any file,
            with a Block size Greater than "^n^" size, will be
            ignored.

  /^KILL^     Deletes the output file if it already exists. If you
            specify an output file specification that already
            exists, ^DUPFIL^ will ^not^ delete the existing file
            unless the /KILL switch is set.  The default is
            /NOKILL (off).

  /^WAIT^     Waits for files locked via LOKSER to become unlocked
            before processing file. This option is only valid
            when the /BYHASH, /HASH or /VERSION option is used.
            If a file is ^locked^ for access, ^DUPFIL^ will pause
            until file is unlocked so that it can process the
            HASH or VERSION number. The Default is /NOWAIT. In
            the /NOWAIT mode, ^locked^ files will be ^bypassed^ and
            indicated on the output terminal screen. If the /WAIT
\
^% DUPFIL Utility %^                                             Page 7 of 13    

            switch is used, ^DUPFIL^ will halt processing until
            the file is ^unlocked^ or until the user presses a
.H -
            -^C-. The current locked file will be bypassed and processing
            will then resume with the next file specification.
.H ^

  /^EXT^      This ON/OFF switch controls the sensitivity of
            checking a file's extension. The default is ON
            (/EXT). This is the normal state of file name
            comparison. There my be instance where one might want
            to check only the file name and not the file's
            extension. With the switch OFF (/NOEXT), only a
            file's name will be compared for a match and the
            file's extension will be ignored.

  /^CREATE^   Outputs the file's creation date. (Available only on
            2.x extended devices.)

  /^UPDATE^   Outputs the file's last update date. (Available only
            on 2.x extended devices.)
\
^% DUPFIL Utility %^                                             Page 8 of 13    

  /^SHOW^     Displays file names as they are processed. Normally,
            ^DUPFIL^'s progress is represented by a statistical
            progress display. Using the /SHOW switch will force
            ^DUPFIL^ to display each file name as it is processed.
            Displaying each file name during processing will slow
            down the ^DUPFIL^ procedure by having to output the
            file name for a terminal display. The default is
            /NOSHOW (off).

  /^?^        This switch will list on the terminal all
            available switches and their functions.

\
^% DUPFIL Utility %^                                             Page 9 of 13    

  Only enough of the switch specification to be unique needs to be
  provided. E.G., the following are valid switch specs:
  
  
    /^BYN^      (Same as /^BYNAME^)
    /^BYH^      (Same as /^BYHASH^)
    /^NOBYN^    (Same as /^NOBYNAME^)
    /^TO^       (Same as /^TOTAL^)
    /^NOT^      (Same as /^NOTOTAL^)
    /^MI:4^     (Same as /^MIN:4^)
  
  
  Switches may be specified anywhere after the program name. ^All^
  switches are ^global^ in their action. For example, the following
  two commands are functionally identical:

  ^  DUPFIL/MIN:50/V ALL:*.WRT[100,45], DSK2:*.T[]
    DUPFIL ALL:*.WRT[100,45]/V, DSK2:*.T[]/MIN:50^

\
^% DUPFIL Utility %^                                             Page 10 of 13    

  Examples:
  
  ->  ^DUPFIL DSK0:*.TXT[],DSK1:*.TXT[]/HAS^
      Output to DUPFIL.LST a list of all .TXT files with the same
      name which are on DSK0: or DSK1:. The hash code of each file
      is also included.

  ->  ^DUPFIL TEST.LST=ALL:*.WRT[]/V/HASH^
      Output to TEST.LST a list of all AlphaWRITE files with the
      same name which are anywhere on the system. Report the
      version number of each file and the hash total of each file.
  
  ->  ^DUPFIL ALL:*.RUN[]/BYHASH^
      Output to DUPFIL.LST a list of all .RUN files with the same
      hash total, irrespective of the file names.
  
  ->  ^DUPFIL ALL:*.RUN[]/NOBYNAME^
      Output to DUPFIL.LST a list of all .RUN files with the same
      hash code, irrespective of the file names.
\
^% DUPFIL Utility %^                                             Page 11 of 13    

  Internally, the operation of ^DUPFIL^ is quite simple. It creates a
  unique file containing a complete file specification, size of the
  file, and type of file. If the /VERSION switch and/or the /HASH
  or /BYHASH switch is selected then the file's version number
  and/or hash code total are also output to the unique working
  file. Once this task is completed, the unique file is sorted in
  ascending or descending order depending upon the switch setting
  on the command line. When the sorting is complete, ^DUPFIL^ will
  scan the unique file for file name matches or hash code total
  matches depending upon the switch setting and output the desired
  information to the ^DUPFIL.LST^ file or the file name specified on
  the command line as the output file specification.
  
  In order to complete this task, ^DUPFIL^ requires disk space as a
  work area during its operation. The more files ^DUPFIL^ needs to
  examine, the more disk work space is required. The ^DUPFIL^ program
  will do a check to see if there is enough ^available free^ disk
  space to process the selection and will inform the user if there
  is NOT enough available free disk space to complete the task.
  ^DUPFIL^ will always create the working file and sort the file on
\
^% DUPFIL Utility %^                                             Page 12 of 13    

  the device that the job invoking ^DUPFIL^ is currently logged on
  to. The resulting output file can be routed to a different device
  as provided in the output file specification on the ^DUPFIL^
  command line.
  
  It is advised that you keep the wild-spec as concise as
  possible or insure you are logged to a disk with sufficient ^free^
  space. ALL DISK WORK space IS returned when DUPFIL finishes.
  
  The /^HASH^ switch or the /^BYHASH^ switch causes ^DUPFIL^ to do a
  considerable amount of extra ^disk access^ and work to acquire hash
  totals and will slow the operation down. To a much lesser extent,
  /^VERSION^ also causes extra disk accesses.
 
  ^DUPFIL^ is compatible with all versions of AMOS 1.3, AMOS 1.4, and
  AMOS 2.x releases. ^DUPFIL^ is also compatible with all versions of
  ^AMSORT.SYS^ on AMOS 1.3, AMOS 1.4, and AMOS 2.x releases. ^DUPFIL^
  knows which version of ^AMSORT.SYS^ is on the system and will sort
  correctly based on the current version you are using.
\
^% DUPFIL Utility %^                                             Page 13 of 13    

     To convert this to an ^AMOS^ style help file use ^DSH2AM.LIT^
     available on the AMUS Network.

     Any ^comments^, ^suggestions^, for ^DUPFIL^ should be made to:

     ^James A. Jarboe IV^
     Educational Video Network, Inc.
     1401 19th Street
     Huntsville, Texas 77340

     (^409^)^295^-^5767^

     Send Email to ^GR^/^AM^ on the ^AMUS Network^.





.
