(find.info.gz) Cleaning Up

Info Catalog (find.info.gz) Archiving (find.info.gz) Common Tasks (find.info.gz) Strange File Names
 
 8.3 Cleaning Up
 ===============
 
 This section gives examples of removing unwanted files in various
 situations.  Here is a command to remove the CVS backup files created
 when an update requires a merge:
 
      find . -name '.#*' -print0 | xargs -0r rm -f
 
    If your `find' command removes directories, you may find that you
 get a spurious error message when `find' tries to recurse into a
 directory that has now been removed.  Using the `-depth' option will
 normally resolve this problem.
 
    It is also possible to use the `-delete' action:
 
      find . -depth -name '.#*' -delete
 
    You can run this command to clean out your clutter in `/tmp'.  You
 might place it in the file your shell runs when you log out
 (`.bash_logout', `.logout', or `.zlogout', depending on which shell you
 use).
 
      find /tmp -depth -user "$LOGNAME" -type f -delete
 
    To remove old Emacs backup and auto-save files, you can use a command
 like the following.  It is especially important in this case to use
 null-terminated file names because Emacs packages like the VM mailer
 often create temporary file names with spaces in them, like `#reply to
 David J. MacKenzie<1>#'.
 
      find ~ \( -name '*~' -o -name '#*#' \) -print0 |
        xargs --no-run-if-empty --null rm -vf
 
    Removing old files from `/tmp' is commonly done from `cron':
 
      find /tmp /var/tmp -depth -not        -type d -mtime +3 -delete
      find /tmp /var/tmp -depth -mindepth 1 -type d -empty    -delete
 
    The second `find' command above cleans out empty directories
 depth-first (`-delete' implies `-depth' anyway), hoping that the
 parents become empty and can be removed too.  It uses `-mindepth' to
 avoid removing `/tmp' itself if it becomes totally empty.
 
    Lastly, an example of a program that almost certainly does not do
 what the user intended:
 
      find dirname -delete -name quux
 
    If the user hoped to delete only files named `quux' they will get an
 unpleasant surprise; this command will attempt to delete everything at
 or below the starting point `dirname'.  This is because `find'
 evaluates the items on the command line as an expression.  The `find'
 program will normally execute an action if the preceeding action
 succeeds.  Here, there is no action or test before the `-delete' so it
 will always be executed.  The `-name quux' test will be performed for
 files we successfully deleted, but that test has no effect since
 `-delete' also disables the default `-print' operation.   So the above
 example will probably delete a lot of files the user didn't want to
 delete.
 
    This command is also likely to do something you did not intend:
      find dirname -path dirname/foo -prune -o -delete
 
    Because `-delete' turns on `-depth', the `-prune' action has no
 effect and files in `dirname/foo' will be deleted too.
 
Info Catalog (find.info.gz) Archiving (find.info.gz) Common Tasks (find.info.gz) Strange File Names
automatically generated by info2html