The find tool trawls filesystems, inspecting files (particularly their inodes), and can perform a variety of tests on them, and then perform certain actions on the files which match the specified tests. Although the syntax to find can be quite difficult to understand, it is almost always far more efficient to use find to trawl through the filesystem than to try to craft your own equivalent.

If you simply need to find a particular file by name, and the updatedb command has been run on your system (usually invoked by cron on a regular basis) then the command locate name-of-file returns a result almost immediately. It depends on an up-to-date database of the names of files currently in the filesystem, but if that exists, and you are only interested in the name of the file, locate could be almost infinitely faster than find.

The parameters to find are basically broken down into expressions and actions. The most common expressions are listed in Table 12-1.

Table 12-1: find Expressions

Expression Used For
-maxdepth levels Trawl only levels levels deep into the filesystem tree.
-mount (or -xdev) Don’t traverse into different filesystems.
-anewer filename or -cnewer filename or -newer filename Find files that have been accessed (-anewer), changed (-cnewer), or modified (-newer) more recently than the reference file filename.
-mmin n or -mtime n

Get Shell Scripting: Expert Recipes for Linux, Bash, and More now with O’Reilly online learning.

O’Reilly members experience live online training, plus books, videos, and digital content from 200+ publishers.