# Findutils-&findutils-version;

The Findutils package contains programs to find files. These programs are provided to recursively search through a directory tree and to create, maintain, and search a database (often faster than the recursive find, but unreliable if the database has not been recently updated).

## Installation of Findutils

Prepare Findutils for compilation:

    ./configure --prefix=/usr --libexecdir=/usr/lib/locate \
        --localstatedir=/var/lib/locate

## The meaning of the configure options:

`--localstatedir`

- This option changes the location of the `locate` database to be in `/var/lib/locate`, which is FHS-compliant.

Compile the package:

    make

To test the results, issue: `make check`.

Install the package:

    make install

The `find` program is used by some of the scripts in the CLFS-Bootscripts package. As `/usr` may not be available during the early stages of booting, the `find` binary needs to be on the root partition:

    mv -v /usr/bin/find /bin

The `updatedb` script needs to be modified to point to the new location for `find`:

    sed -i 's@find:=${BINDIR}@find:=/bin@' /usr/bin/updatedb

## Contents of Findutils

Installed programs Installed directory
- bigram, code, find, frcode, locate, oldfind, updatedb, and xargs /usr/lib/locate

Short Descriptions

`bigram`

- Was formerly used to produce `locate` databases

`code`

- Was formerly used to produce `locate` databases; it is the ancestor of `frcode`.

`find`

- Searches given directory trees for files matching the specified criteria

`frcode`

- Is called by `updatedb` to compress the list of file names; it uses front-compression, reducing the database size by a factor of four to five.

`locate`

- Searches through a database of file names and reports the names that contain a given string or match a given pattern

`oldfind`

- Older version of find, using a different algorithm

`updatedb`

- Updates the `locate` database; it scans the entire file system (including other file systems that are currently mounted, unless told not to) and puts every file name it finds into the database

`xargs`

- Can be used to apply a given command to a list of files