Museum

Home

Lab Overview

Retrotechnology Articles

⇒ Online Manual

Media Vault

Software Library

Restoration Projects

Artifacts Sought

Related Articles

chmod(1)

cpio(1)

grep(1)

/egrep(1)

/fgrep(1)

ln(1)

sh(1)

test(1)

stat(2)

fs(4)

find(1)  —  Commands

OSF  —  Environment_Note_Added

NAME

find − Finds files matching an expression

SYNOPSIS

find pathname ...  expression

DESCRIPTION

The find command recursively searches the directory tree for each specified pathname, seeking files that match a Boolean expression written using the terms given later.  The output from find depends on the terms used in expression. 

Expressions

In the following descriptions, the argument number is a decimal integer that can be specified as +number (more than number), -number (less than number), or number (exactly number). 

-fstype type
TRUE if the file system to which the file belongs is of the type type as follows:

s5fsSystem V file system

nfsNetwork File System

pcXenix

ufsUNIX file system (Berkeley fast file system).  This is the default. 

mfsMemory file system

-i number

-inum number
TRUE if file has inode number. 

-name file
TRUE if file matches the filename.  You can use pattern-matching characters, provided they are quoted.  In an expression such as [a-z], the dash means through according to the current collating sequence.  The collating sequence is determined by the value of the LC_COLLATE environment variable.  See OSF/1 User’s Guide for more information on collating sequences and equivalence classes. 

-perm octal_number
TRUE if the file permission code of the file exactly matches octal_number (see the chmod command).  The octal_number argument may be up to three octal digits.  If you want to test the higher-order permission bits (the set-user-ID bit or set-group-ID bit, for example), prefix the octal_number argument with a − (dash).  This makes more flag bits significant (see the stat system call for an explanation of the additional bits), and also changes the comparison to

(flags&octal_number)==octal_number

-pruneAlways TRUE.  Prunes the search tree at the file.  That is, if the current pathname is a directory, find does not descend into that directory.  In a networking environment, this flag keeps the find command from searching through remote file systems. 

-type type
TRUE if the file type is of the specified type as follows:

bBlock special file

cCharacter special file

dDirectory

fPlain file

lSymbolic link

pFIFO (a named pipe)

sSocket

-links number
TRUE if the file has number links.  See the ln command. 

-user user
TRUE if the file belongs to user.  If user is numeric and does not appear as a login name in the /etc/passwd file, it is interpreted as a user ID. 

-group group
TRUE if the file belongs to group.  If group is numeric and does not appear as a group name in the /etc/group file, it is interpreted as a group ID. 

-size number
TRUE if the file is number blocks long (512 bytes per block).  For this comparison, the file size is rounded up to the nearest block. 

-size numberk
TRUE if the file is number kilobytes long.  For this comparison, the file size is rounded up to the nearest kilobyte. 

-size numberc
TRUE if the file is number bytes long. 

-atime number
TRUE if the file was accessed in the past number days, where number is interpreted as described in this reference page. 

-mtime number
TRUE if the file was modified in the past number days, where number is interpreted as described in this reference page. 

-ctime number
TRUE if the file inode was changed in the past number days, where number is interpreted as described in this reference page. 

-exec command
TRUE if the command runs and returns a 0 (zero) value as exit status.  The end of command must be punctuated by a quoted or escaped ; (semicolon).  The command parameter { } is replaced by the current pathname. 

-ok command
The find command asks you whether it should start command.  If your response begins with y, or the locale’s equivalent of a y, command is started.  The end of command must be punctuated by a quoted or escaped semicolon. 

-printAlways TRUE; causes the current pathname to be displayed.  find does not display pathnames unless you specify this expression term. 

-cpio device
Writes the current file to device in cpio format.  See the cpio command. 

-ncpio size
Sets the input/output size (5120 bytes by default) to size. 

-newer file
TRUE if the current file was modified more recently than the file indicated by file. 

-depthAlways TRUE.  This causes the descent of the directory hierarchy to be done so that all entries in a directory are affected before the directory itself.  This can be useful when find is used with cpio to transfer files that are contained in directories without write permission. 

\( expression \)
TRUE if expression is TRUE. 

-lsAlways TRUE; causes pathname to be printed together with its associated statistics.  These include, respectively, inode number, size in kilobytes (1024 bytes), protection mode, number of hard links, user, group, size in bytes, and modification time.  If the file is a special file, the size field will instead contain the major and minor device numbers.  If the file is a symbolic link, the pathname of the linked-to file is printed preceded by ->.  The format is identical to that of ls -gilds (note that formatting is done internally, without executing ls.) 

-xdevAlways TRUE; causes find to not traverse down a file system different from the one on which the current pathname resides. 

The primaries may be combined using the following operators (in descending order of precedence):

     1.A parenthesized group of primaries and operators (parentheses are special to the shell and must be escaped). 

     2.The negation of a primary (! is the unary not operator). 

     3.Concatenation of primaries (the and operation is implied by the juxtaposition of two primaries). 

     4.Alternation of primaries (-o is the or operator). 

To avoid unpredictable results when using a range expression to match a class of characters, use a character class expression rather than a standard range expression.  For information about character class expressions, see the grep command. 

EXAMPLES

     1.To list all files in the file system with a given base filename, enter:

find  /  -name  .profile  -print

This searches the entire file system and writes the complete pathnames of all files named .profile.  The / (backslash) tells find to search the root directory and all of its subdirectories.  This may take a while, so it is best to limit the search by specifying the directories where you think the files might be. 

     2.To list the files with a specific permission code in the current directory tree, enter:

find  .  -perm  0600  -print

This lists the names of the files that have only owner-read and owner-write permission.  The . (dot) tells find to search the current directory and its subdirectories.  See the chmod command for details about permission codes. 

     3.To search several directories for files with certain permission codes, enter:

find  manual  clients  proposals  -perm  -0600  -print

This lists the names of the files that have owner-read and owner-write permission and possibly other permissions. The directories manual, clients, and proposals, and their subdirectories, are searched.  Note that -perm 0600 in the previous example selects only files with permission codes that match 0600 exactly.  In this example, -perm -0600 selects files with permission codes that allow at least the accesses indicated by 0600.  This also matches the permission codes 0622 and 2744. 

     4.To search for regular files with multiple links, enter:

find  .  -type  f  -links  +1  -print

This lists the names of the ordinary files (-type f) that have more than one link (-links +1).  Note that every directory has at least two links:  the entry in its parent directory and its own . (dot) entry.  See the ln command for details about multiple file links. 

     5.To find all accessible files whose pathanem begins with find, enter:

find find -print

     6.To remove all files named a.out or ∗.o that have not been accessed for a week and that are not mounted using nfs, enter:

find / \( -name a.out -o -name ´∗.o´ \) -atime +7 -exec \
rm {} \; -o -fstype nfs -prune

FILES

/etc/groupContains group information. 

/etc/passwdContains user information. 

EXIT VALUES

The -exec command expression evaluates TRUE if the command runs and returns a 0 (zero) value as exit status. 

ENVIRONMENT NOTES

This section describes system features that are not generic to OSF/1 but that are provided in this OSF/1 implementation. 

Digital Extensions

FLAGS

-mountTests TRUE if the current file is on the same file system as the current starting pathname. 

-fstype type
An additional type is available for Digital systems:

cdfsISO 9660 CDROM (Compact Disk Read-Only Memory) file system

EXAMPLES

     1.To find all files on the root file system enter:

find / -mount -print

     2.To write all the files on the root file system to tape, enter:

find / -mount -print -cpio /dev/rmt?h
cpio -iBvt < /dev/rmt?h

     3.To find all the mount points on the root file system, enter:

find / ! -mount -print

RELATED INFORMATION

cdfs(4)

RELATED INFORMATION

Commands:  chmod(1), cpio(1), grep(1)/egrep(1)/fgrep(1), ln(1), sh(1), test(1). 

Functions:  stat(2). 

Files:  fs(4). 

Typewritten Software • bear@typewritten.org • Edmonds, WA 98026