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

FreeBSD Manual Pages


home | help
BFS(1)			    General Commands Manual			BFS(1)

       bfs - breadth-first search for your files

       bfs [flags...]  [paths...]  [expression...]

       flags  (-H/-L/-P	 etc.),	 paths,	and expressions	may be freely mixed in
       any order.

       bfs is a	breadth-first version of the UNIX find(1) command.

       bfs supports almost every feature from every major find(1)  implementa-
       tion,  so  your existing	command	lines should work as-is.  It also adds
       some features of	its own, such as a more	forgiving command line	parser
       and some	additional options.

       Each  path  specified on	the command line is treated as a starting path
       to search through.  If no paths are specified,  the  current  directory
       (.)  is searched	by default.

       Like  find(1), bfs interprets its arguments as a	short-circuiting Bool-
       ean expression.	For example,

	      bfs \( -name '*.txt' -or -lname '*.txt' \) -and -print

       will print the all the paths that are either  .txt  files  or  symbolic
       links  to  .txt files.  -and is implied between two consecutive expres-
       sions, so this is equivalent:

	      bfs \( -name '*.txt' -or -lname '*.txt' \) -print

       Finally,	-print is implied if no	actions	are specified, so this too  is

	      bfs -name	'*.txt'	-or -lname '*.txt'

       Most  options that take a numeric argument N will also accept -N	or +N.
       -N means	"less than N," and +N means "greater than N."

       -H     Follow symbolic links on the command line, but not while search-

       -L     Follow all symbolic links.

       -P     Never follow symbolic links (the default).

       -E     Use  extended  regular expressions (same as -regextype posix-ex-

       -X     Filter out files with non-xargs(1)-safe names.

       -d     Search in	post-order (same as -depth).

       -s     Visit directory entries in  sorted  order.   The	sorting	 takes
	      place within each	directory separately, which makes it different
	      from bfs ... | sort, but still provides a	 deterministic	order-

       -x     Don't descend into other mount points (same as -xdev).

       -f PATH
	      Treat  PATH  as  a  path	to  search (useful if it begins	with a

       -D FLAG
	      Turn on a	debugging flag (see -D help).

	      Enable optimization level	N (default: 3)

	      -O0    Disable all optimizations.

	      -O1    Basic logical simplifications.

	      -O2    All -O1 optimizations, plus  dead	code  elimination  and
		     data flow analysis.

	      -O3    All  -O2  optimizations, plus re-order expressions	to re-
		     duce expected cost.

		     All  optimizations,  including  aggressive	 optimizations
		     that may alter the	observed behavior in corner cases.

       -S bfs|dfs|ids
	      Use  breadth-first/depth-first/iterative	deepening  search (de-
	      fault: -S	bfs).

       ( expression )
	      Parentheses are used for grouping	expressions together.	You'll
	      probably have to write \(	expression \) to avoid the parentheses
	      being interpreted	by the shell.

       ! expression
       -not expression
	      The "not"	operator: returns the negation of the truth  value  of
	      the  expression.	You may	have to	write \! expression to avoid !
	      being interpreted	by the shell.

       expression expression
       expression -a expression
       expression -and expression
	      Short-circuiting "and" operator: if the left-hand	expression  is
	      true,  returns  the  right-hand  expression;  otherwise, returns

       expression -o expression
       expression -or expression
	      Short-circuiting "or" operator: if the left-hand	expression  is
	      false,  returns  the  right-hand	expression; otherwise, returns

       expression , expression
	      The "comma" operator: evaluates  the  left-hand  expression  but
	      discards the result, returning the right-hand expression.

	      Turn colors on or	off (default: -color if	outputting to a	termi-
	      nal, -nocolor otherwise).

	      Measure time relative to the start of today.

       -depth Search in	post-order (descendents	first).

	      Follow all symbolic links	(same as -L).

	      Whether to report	an error if bfs	detects	that the file tree  is
	      modified during the search (default: -noignore_readdir_race).

       -maxdepth N
       -mindepth N
	      Ignore files deeper/shallower than N.

       -mount Don't  descend  into  other mount	points (same as	-xdev for now,
	      but will skip mount points entirely in the future).

	      Ignored; for compatibility with GNU find.

       -regextype TYPE
	      Use TYPE-flavored	regexes	(default: posix-basic; see  -regextype

	      Skip any files that have already been seen.  Particularly	useful
	      along with -L.

	      Turn on or off warnings about the	command	line.

       -xdev  Don't descend into other mount points.

       -acl   Find files with a	non-trivial Access Control List	(acl(5)).

       -amin [-+]N
       -Bmin [-+]N
       -cmin [-+]N
       -mmin [-+]N
	      Find files accessed/Birthed/changed/modified N minutes ago.

       -anewer FILE
       -Bnewer FILE
       -cnewer FILE
       -mnewer FILE
	      Find files accessed/Birthed/changed/modified more	recently  than
	      FILE was modified.

       -asince TIME
       -Bsince TIME
       -csince TIME
       -msince TIME
	      Find  files accessed/Birthed/changed/modified more recently than
	      the ISO 8601-style timestamp TIME.  See -newerXY for examples of
	      the timestamp format.

       -atime [-+]N
       -Btime [-+]N
       -ctime [-+]N
       -mtime [-+]N
	      Find files accessed/Birthed/changed/modified N days ago.

	      Find files with POSIX.1e capabilities(7) set.

       -depth [-+]N
	      Find files with depth N.

       -empty Find empty files/directories.

	      Find files the current user can execute/read/write.

	      Always false/true.

       -fstype TYPE
	      Find files on file systems with the given	TYPE.

       -gid [-+]N
       -uid [-+]N
	      Find files owned by group/user ID	N.

       -group NAME
       -user NAME
	      Find files owned by the group/user NAME.

	      Find hidden files	(those beginning with .).

       -ilname GLOB
       -iname GLOB
       -ipath GLOB
       -iregex REGEX
       -iwholename GLOB
	      Case-insensitive	versions  of -lname/-name/-path/-regex/-whole-

       -inum [-+]N
	      Find files with inode number N.

       -links [-+]N
	      Find files with N	hard links.

       -lname GLOB
	      Find symbolic links whose	target matches the GLOB.

       -name GLOB
	      Find files whose name matches the	GLOB.

       -newer FILE
	      Find files newer than FILE.

       -newerXY	REFERENCE
	      Find files whose X time is newer than the	Y time	of  REFERENCE.
	      X	and Y can be any of [aBcm] (access/Birth/change/modification).
	      Y	may also be t to parse REFERENCE as an	ISO  8601-style	 time-
	      stamp.  For example:


	      Find files owned by nonexistent groups/users.

       -path GLOB
       -wholename GLOB
	      Find files whose entire path matches the GLOB.

       -perm [-]MODE
	      Find files with a	matching mode.

       -regex REGEX
	      Find  files  whose  entire  path	matches	the regular expression

       -samefile FILE
	      Find hard	links to FILE.

       -since TIME
	      Find files modified since	the  ISO  8601-style  timestamp	 TIME.
	      See -newerXY for examples	of the timestamp format.

       -size [-+]N[cwbkMGTP]
	      Find  files  with	 the  given size, in 1-byte characters,	2-byte
	      words, 512-byte blocks, (default)	or kiB/MiB/GiB/TiB/PiB.

	      Find files that occupy fewer disk	blocks than expected.

       -type [bcdlpfswD]
	      Find files of the	given type.  Possible types are	block  device,
	      character	 device, directory, symbolic link, pipe, regular file,
	      socket, whiteout,	and Door.

       -used [-+]N
	      Find files last accessed N days after they were changed.

       -xattr Find files with extended attributes (xattr(7)).

       -xtype [bcdlpfswD]
	      Find files of the	given type, following links when  -type	 would
	      not, and vice versa.

	      Delete any found files (implies -depth).

       -exec command ... {} ;
	      Execute a	command.

       -exec command ... {} +
	      Execute a	command	with multiple files at once.

       -ok command ... {} ;
	      Prompt the user whether to execute a command.

       -execdir	command	... {} ;
       -execdir	command	... {} +
       -okdir command ... {} ;
	      Like -exec/-ok, but run the command in the same directory	as the
	      found file(s).

       -exit [STATUS]
	      Exit immediately with the	given status (0	if unspecified).

       -fls FILE
       -fprint FILE
       -fprint0	FILE
       -fprintf	FORMAT FILE
	      Like -ls/-print/-print0/-printf, but write to  FILE  instead  of
	      standard output.

       -ls    List files like ls -dils.

	      Filter out hidden	files and directories.

       -print Print the	path to	the found file.

	      Like  -print,  but  use the null character ('\0')	as a separator
	      rather than newlines.  Useful in conjunction with	xargs -0.

       -printf FORMAT
	      Print according to a format string (see find(1)).	  These	 addi-
	      tional format directives are supported:

	      %w     The file's	birth time, in the same	format as %a/%c/%t.

	      %Wk    Field  k  of the file's birth time, in the	same format as

	      Like -print, but escape whitespace and quotation characters,  to
	      make  the	 output	safe for xargs(1).  Consider using -print0 and
	      xargs -0 instead.

       -prune Don't descend into this directory.

       -quit  Quit immediately.

	      Print version information.

       -help  Print usage information.

       bfs    With no arguments, bfs prints all	files under the	current	direc-
	      tory in breadth-first order.

       bfs -name '*.txt'
	      Prints all the .txt files	under the current directory.  *.txt is
	      quoted to	ensure the glob	is processed by	bfs  rather  than  the

       bfs -name access_log -L /var
	      Finds  all files named access_log	under /var, following symbolic
	      links.  bfs allows flags and paths to  appear  anywhere  on  the
	      command line.

       bfs ~ -not -user	$USER
	      Prints all files in your home directory not owned	by you.

       bfs -xtype l
	      Finds broken symbolic links.

       bfs -name .git -prune -false -o -name config
	      Finds all	files named config, skipping every .git	directory.

       bfs -type f -executable -exec strip '{}'	+
	      Runs  strip(1) on	all executable files it	finds, passing it mul-
	      tiple files at a time.


       Tavian Barnes <>

       find(1),	locate(1), xargs(1)



Want to link to this manual page? Use this URL:

home | help