Overview
========
The principal programs used for making lists of files that match
given criteria and running commands on them are `find', `locate', and
`xargs'. An additional command, `updatedb', is used by system
administrators to create databases for `locate' to use.
`find' searches for files in a directory hierarchy and prints
information about the files it found. It is run like this:
find [FILE...] [EXPRESSION]
Here is a typical use of `find'. This example prints the names of all
files in the directory tree rooted in `/usr/src' whose name ends with
`.c' and that are larger than 100 Kilobytes.
find /usr/src -name '*.c' -size +100k -print
`locate' searches special file name databases for file names that
match patterns. The system administrator runs the `updatedb' program
to create the databases. `locate' is run like this:
locate [OPTION...] PATTERN...
This example prints the names of all files in the default file name
database whose name ends with `Makefile' or `makefile'. Which file
names are stored in the database depends on how the system
administrator ran `updatedb'.
locate '*[Mm]akefile'
The name `xargs', pronounced EX-args, means "combine arguments."
`xargs' builds and executes command lines by gathering together
arguments it reads on the standard input. Most often, these arguments
are lists of file names generated by `find'. `xargs' is run like this:
xargs [OPTION...] [COMMAND [INITIAL-ARGUMENTS]]
The following command searches the files listed in the file `file-list'
and prints all of the lines in them that contain the word `typedef'.
xargs grep typedef < file-list