NAME

     fastrm - quickly remove a set of files


SYNOPSIS

     fastrm [ -d ] [ -e ] [ -uN ] [ -sM ] [ -cI ] base_directory


DESCRIPTION

     Fastrm reads a list of files, one per line, from  its  stan-
     dard  input  and removes them.  If a file is not an absolute
     pathname, it is taken relative to the directory specified on
     the  command  line.   The base_directory parameter must be a
     simple absolute pathname - that is, it must not contain  any
     ``/./'' or ``/../'' references.

     Fastrm  is  designed  to  be   faster   than   the   typical
     ``| xargs rm''  pipeline.   For example, fastrm will usually
     chdir(2) into a directory before removing files from it.  If
     the  input  is  sorted,  this  means  that  most files to be
     removed will be simple names.

     Fastrm assumes that its input is valid and that it  is  safe
     to  just  do  an unlink(2) call for each item to be removed.
     As a safety measure, if fastrm is run by root it will  first
     stat(2)  the  item  to  make sure that it is not a directory
     before unlinking it.


OPTIONS

     -d   If the ``-d'' flag is used then no files  are  removed.
          Instead  a  list  of  the files to be removed, in debug
          form, is printed on the  standard  output.   Each  line
          contains  either the current directory of fastrm at the
          time it would do the unlink, and then the path name  it
          would  pass  to  unlink(2)  as  two fields separated by
          white space and a ``/'', or the absolute path  name  (a
          single  field) of files it would unlink using the abso-
          lute path name.

     -e   If the ``-e'' flag is used, fastrm will treat an  empty
          input  file  (stdin)  as an error.  This is most useful
          when fastrm is last in a  pipeline  after  a  preceding
          sort(1)  as if the sort fails, there will usually be no
          output to become input of fastrm.

     -u   If the ``-u'' flag is used, then fastrm  makes  further
          assumptions  about its work environment; in particular,
          that there are no symbolic links in  the  target  tree.
          This  flag  also suggests that it is probably faster to
          reference the path ``../../../'' rather than start from
          the root and come down.  (Note that this probably isn't
          true on systems that have a namei cache, which  usually
          holds  everything except ``..'').  The optional N is an
          integer that specifies the  maximum  number  of  ``..''
          segments  to  use - paths that would use more than this
          use the absolute path name (from the root) instead.  If
          the  ``-u''  flag  is given without a value, ``-u1'' is
          assumed.

     -s   If the ``-s'' flag is used, then  fastrm  will  perform
          the  unlinks  from one directory - that is when a group
          of files in one directory appear in the input  consecu-
          tively  -  in  the  order  that the files appear in the
          directory from which  they  are  to  be  removed.   The
          intent  of  this  flag  is  that on systems that have a
          per-process  directory  cache,  finding  files  in  the
          directory  should be faster.  It can have smaller bene-
          fits on other systems.  The optional M  is  an  integer
          that  specifies  the number of files that must be going
          to be removed from one directory before the files  will
          be  ordered.   If  the  ``-s''  flag is given without a
          value, ``-s5'' is assumed.  When the directory reorder-
          ing  is  in  use fastrm will avoid attempting to unlink
          files that it can't see in  the  directory,  which  can
          speed  it  appreciably when many of the file names have
          already been removed.

     -c   The ``-c'' flag may be given to instruct fastrm when it
          should chdir(2).  If the number of files to be unlinked
          from a directory is at least I then fastrm  will  chdir
          and  unlink the files from in the directory.  Otherwise
          it will build a path relative to its current directory.
          If  ``-c'' is given without the optional integer I then
          ``-c1'' is assumed, which will cause fastrm  to  always
          use  chdir.  If ``-c'' is not used at all, then ``-c3''
          is assumed.  Use ``-c0'' to prevent  fastrm  from  ever
          using chdir(2).

     -a -r
          There are also ``-a''  and  ``-r''  options,  which  do
          nothing at all, except allow you to say ``fastrm -usa''
          ``fastrm -ussr'' or ``fastrm -user''.  These happen  to
          often be convenient sets of options to use.


EXIT STATUS

     Fastrm exits with a status of zero if there  were  no  prob-
     lems,  or one if something went wrong.  Attempting to remove
     a file that does not exist is not considered a problem.   If
     the  program  exits with a non-zero status, it is probably a
     good idea to feed the list of  files  into  an  ``xargs rm''
     pipeline.


HISTORY

     This is revision 1.3, dated 1996/10/29.



Man(1) output converted with man2html