Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages

  
 
  

home | help
aefind(1)							     aefind(1)

NAME
	aefind - search	for files in directory hierarchy

SYNOPSIS
	aefind [ option...  ] path...  expression
	aefind -Help
	aefind -VERSion

DESCRIPTION
	The  aefind command is used to search the combined directory tree of a
	change and its project.	 It is intentionally similar to	find (1), how-
	ever it	unifies	the directory stack of a change	and its	 branch	 base-
	line, and the branch's ancestors' baselines if any.

	For  each  file	 found	in the directory tree, the given expression is
	evaluated from left to right, according	to  the	 rules	of  precedence
	(see  the  section  on	OPERATORS,  below),  only until	the outcome is
	known, at which	point aefind moves on to the next file name.

	If no directory	is named on the	command	line, the current directory is
	assumed.

	Files which have been removed from the project,	even if	 they  somehow
	remain in the directory	tree, will not be reported.

OPTIONS
	The following options are understood:

	-BaseLine
		This  option  may be used to specify that the project baseline
		is the subject of the command.

	-BAse_RElative
		This option may	be used	to cause relative filenames to be con-
		sidered	relative to the	base of	the  source  tree.   See  aeu-
		conf(5)	for the	corresponding user preference.

	-CUrrent_RElative
		This option may	be used	to cause relative filenames to be con-
		sidered	 relative  to  the current directory.  This is usually
		the default.  See aeuconf(5) for the corresponding user	 pref-
		erence.

	-Change	number
		This  option may be used to specify a particular change	within
		a project.  See	aegis(1) for a complete	 description  of  this
		option.

	-Help
		This  option  may be used to obtain more information about how
		to use the aefind program.

	-Project name
		This option may	be used	to select  the	project	 of  interest.
		When  no -Project option is specified, the AEGIS_PROJECT envi-
		ronment	variable is consulted.	If that	does  not  exist,  the
		user's	$HOME/.aegisrc	file is	examined for a default project
		field (see aeuconf(5) for more information).  If that does not
		exist, when the	user is	only working on	changes	within a  sin-
		gle  project, the project name defaults	to that	project.  Oth-
		erwise,	it is an error.

	-Resolve
		This option may	be used	to request that	filenames be  absolute
		paths, referring to the	fully resolved file name.  This	is the
		default.

	-No_Resolve
		This option may	be used	to request that	filenames be base rel-
		ative  names,  relative	to the root of the "stacked" directory
		tree.

	-Verbose
		This option may	be used	to  request  that  the	expression  be
		printed	 again on the standard output.	This is	the expression
		as understood by aefind, to assist you in  ensuring  that  you
		and the	command	agree.	The expression is fully	parenthesized,
		and  all  implicit  operators  made explicit.  Where possible,
		constant expressions will have been folded.

	See also aegis(1) for options common to	all aegis commands.

	All options may	be abbreviated;	the abbreviation is documented as  the
	upper case letters, all	lower case letters and underscores (_) are op-
	tional.	 You must use consecutive sequences of optional	letters.

	All  options  are case insensitive, you	may type them in upper case or
	lower case or a	combination of both, case is not important.

	For example: the arguments "-project", "-PROJ" and "-p"	are all	inter-
	preted to mean the -Project option.  The argument "-prj" will  not  be
	understood, because consecutive	optional characters were not supplied.

	Options	 and  other command line arguments may be mixed	arbitrarily on
	the command line, after	the function selectors.

	The GNU	long option names are understood.  Since all option names  for
	aefind	are  long,  this  means	 ignoring  the extra leading '-'.  The
	"--option=value" convention is also understood.

EXPRESSIONS
	The expression is made up of basic elements,  tests  (which  return  a
	true  or false value), and actions (which have side effects and	return
	a true or false	value),	all separated by operators.

   BASIC ELEMENTS
	{}	The value of this expression is	the file name of the file cur-
		rently being considered.  The value is affected	the  the  -Re-
		solve option.

	{-}	The value of this expression is	the file name of the file cur-
		rently being considered, relative to the base of the directory
		stack.

	{+}	The  value of this expression is the absolute path of the file
		currently being	considered.

	number	Numbers	may be specified directly, for use  with  other	 tests
		and  operators.	  In  the  style of C, they may	be hexadecimal
		with a "0x" prefix, octal with a "0" prefix, or	decimal	other-
		wise.

	string	Strings	may be specified directly, for use  with  other	 tests
		and  operators.	 If the	string contains	shell meta-characters,
		you may	need to	quote it.

	-FAlse	The value of this expression is	always false.

	-NOW	The value of this expression is	the current time, at the start
		of execution.

	-TRue	The value of this expression is	always true.

   OPERATORS
	The -and operator is assumed where the operator	is omitted.  You  will
	need  to quote many of the operators, to protect them from interpreta-
	tion by	the shell.  Each operator must be a separate command line  ar-
	gument.

	( expr )
		Force precedence.

	+ expr	Unary  plus.  Is is an error if	the argument cannot be coerced
		to a number.

	- expr	Unary minus.  Result is	the numeric negative of	the  argument.
		Is is an error if the argument cannot be coerced to a number.

	! expr	Logical	negation of the	sense of the expression.  Is is	an er-
		ror if the argument cannot be coerced to a boolean.
		Synonym: -Not

	~ expr	Bitwise	 not  of the argument.	Is is an error if the argument
		cannot be coerced to an	integer.

	expr1 *	expr2
		This operation multiplies the two values.  Is is an  error  if
		the arguments cannot be	coerced	to numbers.

	expr1 /	expr2
		This  operation	 divides the argument value by the second.  Is
		is an error if the arguments cannot be coerced to numbers.  Is
		is an error if the second argument is zero.

	expr1 %	expr2
		This operation produces	the remainder of the division  of  the
		first  argument	 by the	argument.  Is is an error if the argu-
		ments cannot be	coerced	to numbers.  Is	is  an	error  if  the
		second argument	is zero.

	expr1 ~	expr2
		Is  is an error	if the arguments cannot	be coerced to strings.
		The first argument is the  pattern,  and  the  second  is  the
		string.	  Is  is an error if the first argument	is not a valid
		pattern.  The result is	true if	the pattern matches, and false
		if it does not.	 This operation	performs a shell file  pattern
		comparison.

	expr1 +	expr2
		This  operation	 adds  the  two	values.	 Is is an error	if the
		values cannot be coerced to numbers.

	expr1 -	expr2
		This operation subtracts the second values from	the first.  Is
		is an error if the values cannot be coerced to numbers.

	expr1 ## expr2
		This operation concatenates the	arguments.  Is is an error  if
		the  arguments	cannot	be coerced to strings.	(Note: this is
		not the	same as	the : operator of the expr(1) command.)

	expr1 << expr2
		Shift the first	argument left by the number of bits  specified
		by  the	 second	 argument.  The	left argument is treated as an
		unsigned number.  Is is	an error if the	values cannot  be  co-
		erced to numbers.

	expr1 >> expr2
		Shift the first	argument right by the number of	bits specified
		by  the	 second	 argument.  The	left argument is treated as an
		unsigned number.  Is is	an error if the	values cannot  be  co-
		erced to numbers.

	expr1 <	expr2
		Compare	the values and produce true if the first value is less
		than the second	value, false otherwise.	 If both values	can be
		coerced	 to numbers, the comparison is numeric;	if both	values
		can be coerced to strings, the	comparison  is	lexicographic;
		otherwise is it	an error.

	expr1 <= expr2
		Compare	the values and produce true if the first value is less
		than  or  equal	to the second value, false otherwise.  If both
		values can be coerced to numbers, the comparison  is  numeric;
		if  both  values  can be coerced to strings, the comparison is
		lexicographic; otherwise is it an error.

	expr1 >	expr2
		Compare	the values and produce true  if	 the  first  value  is
		greater	 than the second value,	false otherwise.  If both val-
		ues can	be coerced to numbers, the comparison is  numeric;  if
		both values can	be coerced to strings, the comparison is lexi-
		cographic; otherwise is	it an error.

	expr1 >= expr2
		Compare	 the  values  and  produce  true if the	first value is
		greater	than or	equal to the second  value,  false  otherwise.
		If  both  values  can be coerced to numbers, the comparison is
		numeric; if both values	can be coerced to strings, the compar-
		ison is	lexicographic; otherwise is it an error.

	expr1 == expr2
		Compare	the values and produce true  if	 the  first  value  is
		equal  to  the	second value, false otherwise.	If both	values
		can be coerced to numbers, the comparison is numeric; if  both
		values	can  be	 coerced to strings, the comparison is lexico-
		graphic; otherwise is it an error.

	expr1 != expr2
		Compare	the values and produce true if the first value is  not
		equal  to  the	second value, false otherwise.	If both	values
		can be coerced to numbers, the comparison is numeric; if  both
		values	can  be	 coerced to strings, the comparison is lexico-
		graphic; otherwise is it an error.

	expr1 &	expr2
		This operation produces	the bitwise-and	of the two values.  Is
		is an error if the values cannot be coerced to numbers.

	expr1 |	expr2
		This operation produces	the bitwise-or of the two values.   Is
		is an error if the values cannot be coerced to numbers.

	expr1 && expr2
		Result	is  true  if both expressions are true.	 Short circuit
		evaluation is used, and	so expr2 is not	evaluated if expr1  is
		false.	 Is  is	an error if the	arguments cannot be coerced to
		booleans.
		Synonym: -And

	expr1 expr2
		Logical	and (implied).	Result is true if both expressions are
		true.  Short circuit evaluation	is used, and so	expr2  is  not
		evaluated if expr1 is false.  Please note that implicit	opera-
		tor  plays  merry hell with operator precedence, because there
		is no operator.	 If you	are getting odd	results, use  explicit
		operators.

	expr1 || expr2
		Result	is  true  if either expression is true.	 Short circuit
		evaluation is used, and	so expr2 is not	evaluated if expr1  is
		true.	Is  is	an error if the	arguments cannot be coerced to
		booleans.
		Synonym: -Or

	expr1 ?	expr2 :	expr3
		The value of this expression is	expr2 if expr1	is  true,  and
		expr3  otherwise.  The expr1 is	always evaluated, but only one
		of expr2 or expr3 will be evaluated.  It is an	error  if  the
		value of expr1 cannot be coerced to boolean.

	expr1 ,	expr2
		Both expr1 and expr2 are always	evaluated.  The	value of expr1
		is  discarded;	the  value  of	the expression is the value of
		expr2.

	Operators have precedence as described by the following	table, highest
	to lowest:
			  +-------------------------------+
			  |	Operator	Direction |
			  +-------------------------------+
			  | (unary) + -	~ !	   <-	  |
			  | * /	% ~		   ->	  |
			  | + -	##		   ->	  |
			  | << >>		   ->	  |
			  | < <= > >=		   ->	  |
			  | == !=		   ->	  |
			  | &			   ->	  |
			  | ^			   ->	  |
			  | |			   ->	  |
			  | && (implied) -And	   ->	  |
			  | || -Or		   ->	  |
			  | ? :			   <-	  |
			  | ,			   ->	  |
			  +-------------------------------+

   FUNCTIONS
	There are a number of built-in functions which may be used in the  ex-
	pression.   Functions may be invoked using a syntax similar to C func-
	tions.
				  name ( arguments )
	You need to leave spaces around	the parentheses	so that	they are sepa-
	rate command line arguments.

	atime	This function may be used to determine the  last-accessed-time
		of a file.  It takes one argument.

	basename
		This  function	returns	 the  basename	of the string argument
		passed to it.  It takes	one argument.

	ctime	This function may be used to determine the last-change-time of
		an inode.  It takes one	argument.

	delete	This function may be used to delete a file.  It	takes one  ar-
		gument.	  Always  returns  true.  See also the -delete action,
		below.

	execute	This function may be used to execute a command.	 The arguments
		are assembled into the command to be executed.	Use  the  spe-
		cial  "{}"  argument  to  insert the name of the current file.
		The function returns true of the  command's  exist  status  is
		zero.  All following arguments to find are taken to  be	 argu-
		ments	to  the	command	until an argument consisting of	";" is
		encountered.  The command  is  executed	in the starting	direc-
		tory.  See also	the -execute action, below.

	gid	This function may be used to determine the gid of a file.   It
		takes one argument.

	inode	This  function	may be used to determine the inode number of a
		file.  It takes	one argument.

	mode	This function may be used to determine the access  mode	 (per-
		missions) of a file.  It takes one argument.

	mtime	This  function may be used to determine	the last-modified-time
		of a file.  It takes one argument.

	print	This function may be used to print a value.  It	takes one  ar-
		gument.	 Always	returns	true.  See also	the -print action, be-
		low.

	size	This  function may be used to determine	the size in bytes of a
		file.  It takes	one argument.

	type	This function may be used to determine the type	of a file.  It
		takes one argument.  It	 returns  a  string:  "block_special",
		"character_special",	"directory",   "file",	 "named_pipe",
		"socket" or "symbolic_link".

	uid	This function may be used to determine the uid of a file.   It
		takes one argument.

   TESTS
	Most tests exist to provide compatibility with find(1).

	-Access_Minutes	[ relative-operator ] number
		True  if  the current file was accessed	exactly	number minutes
		ago, false otherwise.  If a relative operator is given (<, <=,
		==, !=,	> or >=) a relative comparison will  be	 made,	rather
		than the implicit equality test.  This is not identical	to the
		similar	 find(1)  test.	  This	is  shorthand for the "( now -
		atime (	{+} )) / 60 relative-operator number" expression.

	-Access_Time [ relative-operator ] number
		True if	the current file was accessed exactly number days ago,
		false otherwise.  If a relative	operator is given (<, <=,  ==,
		!=,  >	or >=) a relative comparison will be made, rather than
		the implicit equality test.  This is not identical to the sim-
		ilar find(1) test.  This is shorthand for the "( now - atime (
		{+} )) / 86400 relative-operator number" expression.

	-Change_Minutes	number
		True if	the current file's inode was  changed  exactly	number
		minutes	ago, false otherwise.  If a relative operator is given
		(<,  <=,  ==, !=, > or >=) a relative comparison will be made,
		rather than the	implicit equality test.	 This is not identical
		to the similar find(1) test.  This is shorthand	for the	"( now
		- ctime	( {+} )) / 60 relative-operator	number"	expression.

	-Change_Time number
		True if	the current file's inode was  changed  exactly	number
		days  ago,  false  otherwise.  If a relative operator is given
		(<, <=,	==, !=,	> or >=) a relative comparison will  be	 made,
		rather than the	implicit equality test.	 This is not identical
		to the similar find(1) test.  This is shorthand	for the	"( now
		- ctime	( {+} )) / 86400 relative-operator number" expression.

	-Modify_Minutes	number
		True  if  the current file was modified	exactly	number minutes
		ago, false otherwise.  If a relative operator is given (<, <=,
		==, !=,	> or >=) a relative comparison will  be	 made,	rather
		than the implicit equality test.  This is not identical	to the
		similar	 find(1)  test.	  This	is  shorthand for the "( now -
		mtime (	{+} )) / 60 relative-operator number" expression.

	-Modify_Time number
		True if	the current file was modified exactly number days ago,
		false otherwise.  If a relative	operator is given (<, <=,  ==,
		!=,  >	or >=) a relative comparison will be made, rather than
		the implicit equality test.  This is not identical to the sim-
		ilar find(1) test.  This is shorthand for the "( now - mtime (
		{+} )) / 86400 relative-operator number" expression.

	-Newer filename
		True if	the current file was modified after  the  given	 file.
		This is	shorthand for the "mtime ( {+} ) > mtime ( filename )"
		expression.

	-Name pattern
		Base  of  file name (the path with the leading directories re-
		moved) matches shell pattern pattern.  This is short-hand  for
		the "pattern ~ basename	( {} )"	expression.

	-PAth pattern
		File  name  matches shell pattern pattern.  Note that the file
		name if	affected by the	-resolve option.  This	is  short-hand
		for the	"pattern ~ {}" expression.

	-Type string
		The  file  type	matches	the type given.	 This is shorthand for
		the "type ( {}	)  ==  string"	expression.   Type  names  are
		matched	similar	to options:
		      Block	  The file is a	block special file.
		      Character	  The file is a	character special file.
		      Directory	  The file is a	directory.
		      File	  The file is a	normal file.
		      Link	  The file is a	symbolic link.
		      Pipe	  The file is FIFO (a named pipe).
		      Socket	  The file is a	UNIX domain socket.

   ACTIONS
	-print	This  will  print  the	full file name on the standard output,
		followed by a newline.	The -Resolve option will  affect  what
		is printed.  This is short-hand	for the	"print ( {} )" expres-
		sion.

	-delete	This  will delete the file, if it is in	the development	direc-
		tory tree.  This is short-hand for the "delete ( {} )" expres-
		sion.

	-execute string... ;
		The may	be used	to execute a command.  This is short-hand  for
		the "execute ( string :	...  )"	expression.

EXIT STATUS
	The  aefind  command  will  exit with a	status of 1 on any error.  The
	aefind command will only exit with a status of 0 if there are  no  er-
	rors.

ENVIRONMENT VARIABLES
	See aegis(1) for a list	of environment variables which may affect this
	command.    See	  aepconf(5)  for  the	project	 configuration	file's
	project_specific field for how to set environment  variables  for  all
	commands executed by Aegis.

COPYRIGHT
	aefind version 4.25.D510
	Copyright  (C)	1991,  1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
	2000, 2001, 2002, 2003,	2004, 2005,  2006,  2007,  2008,  2009,	 2010,
	2011, 2012 Peter Miller

	The  aefind program comes with ABSOLUTELY NO WARRANTY; for details use
	the 'aefind -VERSion License' command.	This is	free software and  you
	are  welcome  to redistribute it under certain conditions; for details
	use the	'aefind	-VERSion License' command.

AUTHOR
	Peter Miller   E-Mail:	 pmiller@opensource.org.au
	/\/\*		  WWW:	 http://miller.emu.id.au/pmiller/

Reference Manual		     Aegis			     aefind(1)

Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=aefind&sektion=1&manpath=FreeBSD+Ports+14.3.quarterly>

home | help