unixdev.net


Switch to SpeakEasy.net DSL

The Modular Manual Browser

Home Page
Manual: (OSF1-V5.1-alpha)
Page:
Section:
Apropos / Subsearch:
optional field



find(1)								      find(1)



NAME

  find - Finds files matching an expression

SYNOPSIS

  find pathname... expression

STANDARDS

  Interfaces documented	on this	reference page conform to industry standards
  as follows:

  find:	 XCU5.0

  Refer	to the standards(5) reference page for more information	about indus-
  try standards	and associated tags.

OPTIONS

  None

OPERANDS

  pathname
      Starting point in	the directory hierarchy.

  expression
      Series of	arguments built	as described in	the DESCRIPTION	section.

DESCRIPTION

  The find command recursively searches	the directory tree for each specified
  path name, seeking files that	match the Boolean expression.  The output
  from the find	command	varies depending on the	terms used in expression.

  Pathname


  The pathname operand is the starting point in	a directory tree for the
  search. If a file name is used for the path name, the	current	directory is
  assumed. A null path name is not permitted, i.e., find "" returns an error.

  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).

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

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

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

  -depth
      Always evaluates to 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.

  -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 ; (semi-
      colon).  The command parameter { } is replaced by	the current path
      name.

  \( expression	\)
      TRUE if expression is TRUE.

  -follow
      Always evaluates to TRUE .  Causes symbolic links	to be followed.	When
      following	symbolic links,	the find command keeps track of	the direc-
      tories visited so	that infinite loops can	be detected.  For example,  a
      loop can occur if	a symbolic link	points to an ancestor. This expres-
      sion should not be used with the -type type expression where type	is of
      type l.

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

      ufs [Tru64 UNIX]	UNIX File System (Berkeley fast	file system) or	a
	  swap partition

      nfs [Tru64 UNIX]	Network	File System (NFS), Version 2 protocol

      mfs [Tru64 UNIX]	Memory File System (RAM	Disk) (See mfs(8))

      pcfs
	  [Tru64 UNIX]	PC File	System

      sysv
	  [Tru64 UNIX]	System V File System

      cdfs
	  [Tru64 UNIX]	ISO 9660 or High Sierra	Formatted (CD-ROM) File	Sys-
	  tem

      dfs [Tru64 UNIX]	DCE Distributed	File System

      efs [Tru64 UNIX]	DCE Episode File System

      procfs
	  [Tru64 UNIX]	Process	File System (used by debuggers)

      advfs
	  [Tru64 UNIX]	Advanced File System (AdvFS)

      ffm [Tru64 UNIX]	File on	File mount (used by streams)

      fdfs
	  [Tru64 UNIX]	File Descriptor	File System (used by streams)

      addon
	  [Tru64 UNIX]	Reserved for third-party file systems

      nfsv3
	  [Tru64 UNIX]	Network	File System, Version 3 protocol

  -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.

  -i number
      TRUE if file has inode number.

  -inum	number
      TRUE if file has inode number.

  -links number
      [Tru64 UNIX]  TRUE if the	file has number	links.	See the	ln command.

  -ls Always evaluates to 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	contain	instead	the major and minor
      device numbers.

      [Tru64 UNIX]  The	find command does not follow symbolic links to other
      directories or files.  Rather, it	applies	the specified selection	cri-
      teria to the symbolic links themselves, treating them as if they were
      ordinary files.  (For more information on	symbolic links,	see ln(1).)

  -mount
      [Tru64 UNIX]  TRUE if the	current	file is	on the same file system	as
      the current starting path	name.

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

  -name	file
      TRUE if file matches the file name.  You can use pattern-matching	char-
      acters, 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	the reference page for your current shell for
      a	more detailed explanation of pattern matching and quoting special
      characters.

  -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	indi-
      cated by file.

  -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.

  -perm	octal_number
      TRUE if the file permission code of the file exactly matches
      octal_number (see	the chmod(1) reference page).

      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

  -print
      Always TRUE; causes the current path name	to be displayed. If an
      expression is not	specified or if	expression is not -ok or -exec,
      -print is	the default.  For example, the following commands produce the
      same result:


	   find	.
	   find	. -print
	   find	. -name	"*"



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

  -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	numberc
      TRUE if the file is number bytes long.

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

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

      b	  [Tru64 UNIX]	Block special file

      c	  [Tru64 UNIX]	Character special file

      d	  Directory

      f	  Plain	file

      l	  [Tru64 UNIX]	Symbolic link

      p	  [Tru64 UNIX]	FIFO (a	named pipe)

      s	  [Tru64 UNIX]	Socket

  -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.

  -xdev
      Always TRUE; causes find not to traverse down a file system different
      from the one on which the	current	path name 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 spe-
       cial to the shell and must be escaped. Parentheses must be separated
       from other primaries and	operators by at	least one space.

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

   3.  Concatenation of	primaries (the and operation is	implied	by the juxta-
       position	of two primaries but can also be specified explicitly with
       the -a operator).

   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 stan-
  dard range expression.  For information about	character class	expressions,
  see the grep command.

EXIT STATUS

  The following	exit values are	returned:

  0   All pathname operands were traversed successfully.

  >>0  An error occurred.

RETURN VALUES

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

EXAMPLES

   1.  To list all files in the	file system with a given base file name,
       enter:
	    find / -name .profile -print

       This searches the entire	file system and	writes the complete path
       names 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(1) reference page 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 per-
       mission 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 path name 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

   7.  To find all files modified within the last 24 hours, enter:
	    find . -mtime 1 -print

   8.  To find all files on the	root file system, enter:
	    find / -mount -print

   9.  To write	all the	files on the root file system to tape, enter:
	    find / -mount -print -cpio /dev/tape/tape?_d0
	    cpio -iBvt <&lt;/dev/rmt?h

   10. To find all the mount points on the root	file system, enter:
	    find / ! -mount -print

   11. The next	several	examples show how to build complex expressions using
       the available operators.	 These examples	use the	directory structure
       that follows:
	    % ls -al

	    total 77
	    drwxr-xr-x	 9 me	    users	8192 Nov  6 17:28 .
	    drwxrwxrwx	47 me	    users	8192 Nov  6 13:30 ..
	    -rw-r--r--	 1 me	    users	1559 Dec 23  1996 7
	    -rw-r--r--	 1 me	    users	   7 May 30 12:22 abc
	    -rw-r--r--	 1 me	    users	   0 Nov  5 17:44 ccc
	    drwxr-xr-x	 2 me	    users	8192 Apr  6  1997 crn
	    drwxr-xr-x	 3 me	    users	8192 Mar 23  1997 crypto
	    drwxr-xr-x	 2 me	    users	8192 Sep 12 14:24 exp
	    -rwx--x--x	 1 me	    users	   0 Nov  1  1996 filea
	    ---x-w--wx	 1 me	    users	   0 Nov  1  1996 fileb
	    -rw-r--r--	 1 me	    adm		   0 Jun 13 13:43 filek
	    -rwxr-xr-x	 1 me	    users	 216 Nov  1  1996 filet
	    -rw-r--r--	 1 me	    users	   0 Nov  6 17:35 find
	    -rw-r--r--	 1 me	    adm		   0 Jun 13 13:43 gfilek
	    -rwxr-xr-x	 1 me	    users	 216 Nov  6 17:28 gfilet
	    drwxr-xr-x	 2 me	    users	8192 Oct 23 13:49 h4d
	    -rw-r--r--	 1 me	    adm		   0 Jun 13 13:43 hfilek
	    drwxr-xr-x	 2 me	    users	8192 Oct 23 11:50 resume
	    drwxr-xr-x	 2 me	    users	8192 Sep  8 13:31 timtst
	    -rw-r--r--	 1 me	    users	   0 Nov  6 17:25 typescript
	    drwxr-xr-x	 2 me	    users	8192 Dec 18  1996 wordgame

   12. The following example finds all files that have a name starting with
       file.  Notice that the asterisk must be escaped to prevent the shell
       from interpreting it as a special character.
	    % find . -name file\*

	    ./filea
	    ./fileb
	    ./filet
	    ./filek

   13. The following example finds all files that have a name starting with
       file and	an owning group	of adm.	 Notice	that this is the default
       behavior, and is	identical to the next example using the	-a operator.
	    % find . -name file\* -group adm

	    ./filek

   14. The following example finds all files that have a name starting with
       file and	an owning group	of adm.	 Notice	that this is identical to the
       prior example of	the default behavior.
	    % find . -name file\* -a -group adm

	    ./filek

   15. The following example finds all files that have a name starting with
       file or that have an owning group of adm.
	    % find . -name file\* -o -group adm

	    ./filea
	    ./fileb
	    ./filet
	    ./filek
	    ./gfilek
	    ./hfilek

   16. The following example finds all files that have a name starting with
       file or that have an owning group of adm	and a name starting with gf.
	    % find . -name file\* -o -group adm	-name gf\*

	    ./filea
	    ./fileb
	    ./filet
	    ./filek
	    ./gfilek

   17. The following example finds all files that have a name starting with
       file and	that have an owning group of adm or a name starting with gf.
	    % find . -name file\* -a -group adm	-o -name gf\*

	    ./filek
	    ./gfilek
	    ./gfilet

   18. The following example finds all files that have an owning group other
       than the	group users.
	    % find . ! -group users

	    ./filek
	    ./gfilek
	    ./hfilek

   19. The following example finds all files owned by the group	users and
       that have a name	starting with file or that have	a name starting	with
       cc.
	    % find . \(	-group users -a	-name file\* \)	-o -name cc\*

	    ./filea
	    ./fileb
	    ./filet
	    ./ccc

   20. The following example finds all files not owned by the group users and
       that have a name	starting with file or that have	a name starting	with
       cc.
	    % find . \(	! -group users -a -name	file\* \) -o -name cc\*

	    ./filek
	    ./ccc



ENVIRONMENT VARIABLES

  The following	environment variables affect the execution of find:

  LANG
      Provides a default value for the internationalization variables that
      are unset	or null. If LANG is unset or null, the corresponding value
      from the default locale is used. If any of the internationalization
      variables	contain	an invalid setting, the	utility	behaves	as if none of
      the variables had	been defined.

  LC_ALL
      If set to	a non-empty string value, overrides the	values of all the
      other internationalization variables.

  LC_CTYPE
      Determines the locale for	the interpretation of sequences	of bytes of
      text data	as characters (for example, single-byte	as opposed to multi-
      byte characters in arguments).

  LC_MESSAGES
      Determines the locale for	the format and contents	of diagnostic mes-
      sages written to standard	error.

  NLSPATH
      Determines the location of message catalogues for	the processing of
      LC_MESSAGES.

  PATH
      Determines the location of command for -exec and -ok primaries.

FILES

  /etc/group
      Contains group information.

  /etc/passwd
      Contains user information.

SEE ALSO

  Commands:  chmod(1), cpio(1),	df(1), grep(1),	ln(1), mount(8), Bourne	shell
  sh(1b), POSIX	shell sh(1p), test(1)

  Functions:  mount(2),	stat(2)

  Routines:  getvfsbyname(3)

  Files:  fs(4), fstab(4), cdfs(4)

  Standards:  standards(5)