(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