April 29, 2026
-
Fixed
./configure CFLAGS=...being overridden by auto-detected flags (70341236) -
Fixed the build on Android < 11 (#215)
-
bfsnow takes system-wide open file limits into account. Previously, a handful of concurrentbfsinstances could overwhelm a system with a low global limit, particularly macOS. (6f6f760a)
August 11, 2025
- Switched from C17 to C23 by default. C17 is still supported as a fallback as long as your compiler supports some common extensions.
June 20, 2025
-
Fixed an invalid optimization that transformed
$ bfs -user you -or -user meinto just
$ bfs -user youThe bug was originally introduced in bfs 2.0 (October 14, 2020). (#155)
June 15, 2025
-
bfsnow takes CPU affinity into account when picking how many threads to use (a36774b) -
-execdir /bin/...is now allowed even with a relative path in$PATH(cb40f51) -
Expect is no longer a test suite dependency (
7102fec)
-
Only the last
-files0-fromargument now has any effect, to match GNU find (a662fda) -
Fixed
-execdir {}, which was inadvertently broken in bfs 4.0 (def4a83)
February 26, 2025
-
Fixed
-fstypewith btrfs subvolumes (requires Linux 5.8+) (0dccdae) -
Fixed
-lswith timestamps very far in the future (dd5df1f) -
Fixed the
posix/exec_sigmasktest on mips64el Linux (532dec0) -
Fixed time-related tests with
mawk 1.3.4 20250131(#152)
January 18, 2025
- Fixed a bug that could cause child processes (e.g. from
-exec) to run with all signals blocked. The bug was introduced in version 3.3. (af207e7)
-
Fixed the build against old liburing versions (#147)
-
Async I/O performance optimizations
October 31, 2024
-
Fixed a man page typo (#144)
-
Fixed the build on PowerPC macOS (#145)
-
Fixed a bug introduced in bfs 4.0.3 that colorized every file as if it had capabilities on non-Linux systems (#146)
October 22, 2024
-
Fixed an assertion failure when
$LS_COLORScontained escaped NUL bytes like*\0.gz=(f5eaadb9) -
Fixed a use-after-free bug introduced in bfs 4.0 when unregistering and re-registering signal hooks. This could be reproduced with
bfs -nocolorby repeatedly sendingSIGINFO/SIGUSR1to toggle the status bar. (39ff273) -
Fixed a hang present since bfs 3.0 colorizing paths like
notdir/file, wherenotdiris a symlink pointing to a non-directory file. (b89f22cb)
September 17, 2024
- Implemented
./configure --version=X.Y.Z, mainly for packagers to override the version number (4a278d3)
- Minor refactoring of the build system
-
Fixed
./configure --help, which was broken sincebfs4.0 (07ae989) -
Fixed compiler flag auto-detection on systems with non-GNU
sed. This fixes a potential race condition on FreeBSD sincebfs4.0 due to the switch to_Fork()without passing-z nowto the linker. (34e6081) -
Fixed
$MAKE distcheckwhen$MAKEis notmake, e.g.gmake distcheckon BSD (2135b00) -
Fixed some roff syntax issues in the
bfsmanpage (812ecd1) -
Fixed an assertion failure optimizing expressions like
bfs -not \( -prune , -type f \)sincebfs3.1. Release builds were not affected, since their assertions are disabled and the behaviour was otherwise correct. (b1a9998)
August 19, 2024
bfsno longer prints a "suppressed errors" warning unless-noerroris actually suppressing errors (5d03c9d)
August 16, 2024
-
To match BSD
find(and the POSIX Utility Syntax Guidelines), multiple flags can now be given in a single argument like-LEXO2. Previously, you would have had to write-L -E -X -O2. (c0fd33a) -
Explicit timestamps can now be written as
@SECONDS_SINCE_EPOCH. For example,bfs -newermt @946684800will print files modified since January 1, 2000 (UTC). (c6bb003) -
The new
-noerroroption suppresses all error messages during traversal. (#142)
-
-mountnow excludes mount points entirely, to comply with the recently published POSIX 2024 standard. Use-xdevto include the mount point itself, but not its contents.bfshas been warning about this change since version 1.5.1 (September 2019). (33b85e1) -
-permnow takes the current file creation mask into account when parsing a symbolic mode like+rw, as clarified by POSIX defect 1392. This matches the behaviour of BSDfind, contrary to the behaviour of GNUfind. (6290ce4)
-
Fixed commands like
./configure CC=clang --enable-releasethat set variables before other options (49a5d48) -
Fixed the build on RISC-V with GCC versions older than 14 (
e93a1dc) -
Fixed running
bfsunder Valgrind (a01cfac) -
Fixed the exit code when failing to execute a non-existent command with
-exec/-okon some platforms including OpenBSD and HPPA (8c130ca) -
Fixed
$LS_COLORScase-sensitivity to match GNU ls more closely when the same extension is specified multiple times (08030ae) -
Fixed the
-statusbar on Solaris/Illumos
June 3, 2024
- Reduced the scope of the symbolic link loop change in version 3.3.
-xtype lremains true for symbolic link loops, matching a change in GNU findutils 4.10.0. However,-Lwill report an error, just likebfsprior to 3.3 and otherfindimplementations, as required by POSIX.
May 28, 2024
-
The
-statusbar can now be toggled bySIGINFO(Ctrl+T) on systems that support it, andSIGUSR1on other systems -
-regextypenow supports all regex types from GNU find (#21) -
File birth times are now supported on OpenBSD
-
Symbolic link loops are now treated like other broken links, rather than an error
-
./configurenow expects--with-libacl,--without-libcap, etc. rather than--enable-/--disable- -
The
(space) flag is now restricted to numeric-printfspecifiers
-
-regextype emacsnow supports shy (non-capturing) groups -
Fixed
-statusbar visual corruption when the terminal is resized -
bfsnow prints a reset escape sequence when terminated by a signal in the middle of colored output (#138) -
./configure CFLAGS=...no longer overrides flags frompkg-configduring configuration
May 2, 2024
-
New
-limit Naction that quits immediately afterNresults -
Implemented
-context(from GNU find) for matching SELinux contexts (#27) -
Implemented
-printf %Zfor printing SELinux contexts
-
The build system has been rewritten, and there is now a configure step:
$ ./configure $ makeSee
./configure --helpor docs/BUILDING.md for more details. -
Improved platform support
- Implemented
-aclon Solaris/Illumos - Implemented
-xattron DragonFly BSD
- Implemented
- Fixed some rarely-used code paths that clean up after allocation failures
March 6, 2024
- On Linux, the
io_uringfeature probing introduced inbfs3.1.2 only applied to one thread, causing all other threads to avoid using io_uring entirely. The probe results are now copied to all threads correctly. (f64f76b)
February 29, 2024
-
On Linux, we now check for supported
io_uringoperations before using them, which should fixbfson 5.X series kernels that supportio_uringbut not all ofopenat()/close()/statx()(8bc72d6) -
Fixed a test failure triggered by certain filesystem types for
/tmp(#131) -
Fixed parsing and interpretation of timezone offsets for explicit reference times used in
-*sinceand-newerXt(a9f3cde) -
Fixed the build on m68k (
c749c11)
February 16, 2024
-
Performance and scalability improvements
-
The file count in
bfs -statusnow has a thousands separator
February 6, 2024
-
On Linux,
bfsnow uses io_uring for async I/O -
On all platforms,
bfscan now performstat()calls in parallel, accelerating queries like-links,-newer, and-size, as well as colorized output -
On FreeBSD,
-type wnow works to find whiteouts like the systemfind
-
Improved
bfs -j2performance (b2ab7a1) -
Optimized
-execby usingposix_spawn()when possible, which can avoid the overhead offork()(95fbde1) -
-execdirand-okdirare now rejected if$PATHcontains a relative path, matching the behaviour of GNU find (163baf1) -
Leading whitespace is no longer accepted in integer command line arguments like
-links ' 1'(e0d7dc5)
-
-quitand-exitcould be ignored in the iterative deepening modes (-S {ids,eds}). This is now fixed (670ebd9). The bug was introduced in version 3.0.3 (commit5f16169). -
Fixed two possible errors in sort mode (
-s): -
Fixed handling of FreeBSD union mounts (
3ac3bee) -
Fixed
NO_COLORhandling when it's set to the empty string (79aee58) -
Fixed some portability issues:
October 12, 2023
- Fixed a segfault when reporting errors under musl (
d40eb87)
October 12, 2023
-
Iterative deepening modes (
-S {ids,eds}) were optimized by delaying teardown until the very end (5f16169) -
Parallel depth-first search (
-S dfs) was optimized to avoid enqueueing every file separately (2572273)
-
Iterative deepening modes (
-S {ids,eds}) were performing iterative breadth-first searches sincebfs3.0, negating any advantages they may have had over normal breadth-first search. They now do iterative depth-first searches as expected. (a029d95) -
Fixed a linked-list corruption that could lead to an infinite loop on macOS and other non-Linux, non-FreeBSD platforms (
773f4a4)
September 6, 2023
-
-files0-fromnow allows an empty set of paths to be given, matching GNU findutils 4.9.0 -
Reduced memory consumption in multi-threaded searches
-
Many man page updates
- Fixed an out-of-bounds memory read that could occur when escaping a string containing an incomplete multi-byte character
July 18, 2023
-
Traversal fixes that mostly affect large directory trees (#107)
-
bfscould encounterEMFILE, close a file, and retry many times, particularly with-j1 -
Breadth-first search could become highly unbalanced, negating many of the benefits of
bfs -
On non-{Linux,FreeBSD} platforms, directories could stay open longer than necessary, consuming extra memory
-
July 13, 2023
bfsnow reads directories asynchronously and in parallel (#101). Performance is significantly improved as a result. Parallelism is controlled by the new-jflag, e.g.-j1,-j2, etc.
-
bfsnow uses the C17 standard version, up from C11 -
Due to #101,
bfsnow requires some additional C and POSIX features:- Standard C atomics (
<stdatomic.h>) - POSIX threads (
<pthread.h>)
- Standard C atomics (
-
$LS_COLORSextensions written in different cases (e.g.*.jpg=35:*.JPG=01;35) are now matched case-sensitively, to match the new behaviour of GNU ls since coreutils version 9.2 -
Added a warning/error if
$LS_COLORScan't be parsed, depending on whether-coloris requested explicitly -
Filenames with control characters are now escaped when printing with
-color -
Build flags like
WITH_ONIGURUMAhave been renamed toUSE_ONIGURUMA
- Fixed handling of the "normal text" color (
noin$LS_COLORS) to match GNU ls
January 31, 2023
-
Fixed running the tests as root on Linux
8b24de3 -
Stopped relying on non-POSIX touch(1) features in the tests. This should fix the tests on at least OpenBSD.
2d5edb3 -
User/group caches are now filled lazily instead of eagerly
b41dca5 -
More caches and I/O streams are flushed before -exec/-ok
f98a1c4 -
Fixed various memory safety issues found by fuzzing
712b1375ce883dda02defc55e855 -
Fixed a test failure on certain macOS versions
8b24de3 -
Mitigated a race condition when determining filesystem types (#97)
-
Lots of refactoring and optimization
October 21, 2022
-
Fixed use of uninitialized memory on parsing errors involving
-fprintf -
Fixed Android build issues (#96)
-
Refactored the test suite
July 7, 2022
-
Fix
stat()errors on GNU Hurd systems with glibc older than 2.35 -
Added fish shell tab completion (#94). Thanks @xfgusta!
May 21, 2022
-
Fixed deleting large NFS directories on FreeBSD (#67).
-
Added support for a
bfs-specificBFS_COLORSenvironment variable. -
Refactored the build system, directory structure, and documentation (#88, #89, #91). Thanks @ElectronicsArchiver!
-
Added
zshcompletion (#86). Thanks @VorpalBlade! -
Updated the default color scheme to match GNU coreutils 9.1. Files with capabilities set are no longer colored differently by default, resulting in a significant performance improvement.
-
Became less aggressive at triggering automounts
-
Added support for out-of-tree builds with
BUILDDIR
March 27, 2022
-
Added compiler-style context for errors and warnings. Errors look like this:
$ bfs -nam needle bfs: error: bfs -nam needle bfs: error: ~~~~ bfs: error: Unknown argument; did you mean -name?and warnings look like this:
$ bfs -print -name 'needle' bfs: warning: bfs -print -name needle bfs: warning: ~~~~~~~~~~~~ bfs: warning: The result of this expression is ignored. -
Updated from C99 to C11
-
Fixed the tests when built against musl
-
Fixed a build error reported on Manjaro
February 24, 2022
-
Fixed the build when Oniguruma is not installed in the default search paths (#82)
-
Fixed string encoding bugs with Oniguruma enabled
-
Fixed regex error reporting bugs
February 22, 2022
-
Added the Oniguruma regular expression library as an (optional, but enabled by default) dependency (#81). Oniguruma supports more regular expression syntax types than the POSIX regex API, and often performs better. To build
bfswithout this new dependency, domake WITH_ONIGURUMA=to disable it. Thanks @data-man! -
Added support for the
ed,emacs,grep, andsedregular expression types (#21) -
Before executing a process with
-exec[dir]/-ok[dir],bfsnow ensures all output streams are flushed. Previously, I/O from subprocesses could be interleaved unpredictably with buffered I/O frombfsitself.
January 21, 2022
-
Fixed the build on Debian kFreeBSD
-
Fixed a crash on GNU Hurd when piping bfs's output
-
Fixed a double-
close()on non-Linux platforms iffdopendir()fails -
Reduced memory allocations on startup
November 25, 2021
-
More tweaks to
PAGERandLESShandling forbfs -help(#76) -
Use 512-byte blocks for
-lswhenPOSIXLY_CORRECTis set (#77) -
Implemented
-files0-from FILEto take a list of'\0'-separated starting paths. GNU find will implement the same feature in an upcoming release. -
Added colors to
-printfoutput (#62) -
Faster recovery from
E2BIGduring-exec
June 2, 2021
-
Fixed some incorrect coloring of broken links when links are being followed (
-L) -
Made the tests work when run as root by dropping privileges. This may be helpful for certain packaging or CI environments, but is not recommended.
-
Treat empty
PAGERandLESSenvironment variables like they're unset, forbfs -help(#71). Thanks @markus-oberhumer! -
The soft
RLIMIT_NOFILEis now raised automatically to a fairly large value when possible. This provides a minor performance benefit for large directory trees. -
Implemented time units for
-mtimeas found in FreeBSD find (#75)
March 6, 2021
-
Fixed
-hiddenon hidden start paths -
Added a Bash completion script. Thanks @bmundt6!
-
Fixed rounding in
-used. Corresponding fixes were made to GNU find in version 4.8.0. -
Optimized the open directory representation. On Linux, much libc overhead is bypassed by issuing syscalls directly. On all platforms, a few fewer syscalls and open file descriptors will be used.
-
Implemented
-flagsfrom BSD find
November 11, 2020
-
Added a new
-statusoption that displays the search progress in a bar at the bottom of the terminal -
Fixed an optimizer bug introduced in version 2.0 that affected some combinations of
-user/-groupand-nouser/-nogroup
October 14, 2020
-
#8: New
-exclude <expression>syntax to more easily and reliably filter out paths. For example:bfs -name config -exclude -name .gitwill find all files named
config, without searching any directories (or files) named.git. In this case, the same effect could have been achieved (more awkwardly) with-prune:bfs ! \( -name .git -prune \) -name configBut
-excludewill work in more cases:# -exclude works with -depth, while -prune doesn't: bfs -depth -name config -exclude -name .git # -exclude applies even to paths below the minimum depth: bfs -mindepth 3 -name config -exclude -name .git -
#30:
-nohiddenis now equivalent to-exclude -hidden. This changes the behavior of command lines likebfs -type f -nohiddento do what was intended.
-
Optimized the iterative deepening (
-S ids) implementation -
Added a new search strategy: exponential deepening search (
-S eds). This strategy provides many of the benefits of iterative deepening, but much faster due to fewer re-traversals. -
Fixed an optimizer bug that could skip
-empty/-xtypeif they didn't always lead to an action -
Implemented
-xattrnameto find files with a particular extended attribute (from macOS find) -
Made
-printf %lstill respect the width specifier (e.g.%10l) for non-links, to match GNU find -
Made
bfsfail if-coloris given explicitly andLS_COLORScan't be parsed, rather than falling back to non-colored output
April 22, 2020
- Fixed
-lsprinting numeric IDs instead of user/group names in large directory trees - Cached the user and group tables for a performance boost
- Fixed interpretation of "default" ACLs
- Implemented
-sflag to sort results
February 25, 2020
- Implemented
-newerXt(explicit reference times),-since,-asince, etc. - Fixed
-emptyto skip special files (pipes, devices, sockets, etc.)
January 9, 2020
- Fixed the build on NetBSD
- Added support for NFSv4 ACLs on FreeBSD
- Added a
+after the file mode for files with ACLs in-ls - Supported more file types (whiteouts, doors) in symbolic modes for
-ls/-printf %M - Implemented
-xattron FreeBSD
September 14, 2019
- Added a warning to
-mount, since it will change behaviour in the next POSIX revision - Added a workaround for environments that block
statx()withseccomp(), like older Docker - Fixed coloring of nonexistent leading directories
- Avoided calling
stat()on all mount points at startup
June 27, 2019
- New
-xattrpredicate to find files with extended attributes - Fixed the
-aclimplementation on macOS - Implemented depth-first (
-S dfs) and iterative deepening search (-S ids) - Piped
-helpoutput into$PAGERby default - Fixed crashes on some invalid
LS_COLORSvalues
April 5, 2019
- Added a nicer error message when the tests are run as root
- Fixed detection of comparison expressions with signs, to match GNU find for things like
-uid ++10 - Added support for https://no-color.org/
- Decreased the number of
stat()calls necessary in some cases
April 15, 2019
- New
-uniqueoption that filters out duplicate files (#48) - Optimized the file coloring implementation
- Fixed the coloring implementation to match GNU ls more closely in many corner cases
- Implemented escape sequence parsing for
LS_COLORS - Implemented
ln=targetfor coloring links like their targets - Fixed the order of fallbacks used when some color keys are unset
- Implemented escape sequence parsing for
- Add a workaround for incorrect file types for bind-mounted files on Linux (#37)
February 10, 2019
- Fixed unpredictable behaviour for empty responses to
-ok/-okdircaused by an uninitialized string - Writing to standard output now causes
bfsto fail if the descriptor was closed - Fixed incomplete file coloring in error messages
- Added some data flow optimizations
- Fixed
-nogroup/-nouserin big directory trees - Added
-type wfor whiteouts, as supported by FreeBSDfind - Re-wrote the
-helpmessage and manual page
January 11, 2019
- Fixed an out-of-bounds read if LS_COLORS doesn't end with a
: - Allowed multiple debug flags to be specified like
-D opt,tree
January 3, 2019
- Fixed some portability problems affecting FreeBSD
January 2, 2019
New features:
-aclfinds files with non-trivial Access Control Lists (from FreeBSD)-capablefinds files with capabilities set-D allturns on all debugging flags at once
Fixes:
LS_COLORShandling has been improved:- Extension colors are now case-insensitive like GNU
ls or(orphan) andmi(missing) files are now treated differently- Default colors can be unset with
di=00or similar - Specific colors fall back to more general colors when unspecified in more places
LS_COLORSno longer needs a trailing colon
- Extension colors are now case-insensitive like GNU
-ls/-flsnow prints the major/minor numbers for device nodes-exec ;is rejected rather than segfaultingbfsnow builds on old Linux versions that require-lrtfor POSIX timers- For files whose access/change/modification times can't be read,
bfsno longer fails unless those times are needed for tests - The testsuite is now more correct and portable
September 24, 2018
- GNU find compatibility fixes for
-printf:%Ynow prints?if an error occurs resolving the link%Bis now supported for birth/creation time (as well as%W/%w)- All standard
strftime()formats are supported, not just the ones from the GNU find manual
- Optimizations are now re-run if any expressions are reordered
-execand friends no longer leave zombie processes around whenexec()fails
July 15, 2018
- Fixed
test_depth_erroron filesystems that don't fill ind_type - Fixed the build on Linux architectures that don't have the
statx()syscall (ia64, sh4) - Fixed use of AT_EMPTY_PATH for fstatat on systems that don't support it (Hurd)
- Fixed
ARG_MAXaccounting on architectures with large pages (ppc64le) - Fixed the build against the upcoming glibc 2.28 release that includes its own
statx()wrapper
June 23, 2018
- Minor bug fixes:
- Fixed
-exec ... '{}' +argument size tracking after recovering fromE2BIG - Fixed
-fstypeif/procis available but/etc/mtabis not - Fixed an uninitialized variable when given
-perm +rw... - Fixed some potential "error: 'path': Success" messages
- Fixed
- Reduced reliance on GNU coreutils in the testsuite
- Refactored and simplified the internals of
bftw()
February 8, 2018
- Performance optimizations
January 20, 2018
- Added support for the
-perm +7777syntax deprecated by GNU find (equivalent to-perm /7777), for compatibility with BSD finds - Added support for file birth/creation times on platforms that report it
-Bmin/-Btime/-BnewerBflag for-newerXY%wand%Wkdirectives for-printf- Uses the
statx(2)system call on new enough Linux kernels
- More robustness to
E2BIGadded to the-execimplementation
October 27, 2017
- Added a man page
- Fixed cases where multiple actions write to the same file
- Report errors that occur when closing files/flushing streams
- Fixed "argument list too long" errors with
-exec ... '{}' +
October 4, 2017
- Refactored the optimizer
- Implemented data flow optimizations
September 10, 2017
- Fixed
-samefileand similar predicates when passed broken symbolic links - Implemented
-fstypeon Solaris - Fixed
-fstypeunder musl - Implemented
-D search - Implemented a cost-based optimizer
August 10, 2017
- Re-licensed under the BSD Zero Clause License
- Fixed some corner cases with
-execand-okparsing
July 22, 2017
- Implemented some primaries from NetBSD
find:-exit [STATUS](like-quit, but with an optional explicit exit status)-printx(escape special characters forxargs)-rm(alias for-delete)
- Warn if
-prunewill have no effect due to-depth - Handle y/n prompts according to the user's locale
- Prompt the user to correct typos without having to re-run
bfs - Fixed handling of paths longer than
PATH_MAX - Fixed spurious "Inappropriate ioctl for device" errors when redirecting
-exec ... +output - Fixed the handling of paths that treat a file as a directory (e.g.
a/b/cwherea/bis a regular file) - Fixed an expression optimizer bug that broke command lines like
bfs -name '*' -o -print
June 15, 2017
Bugfix release.
- Fixed handling of \0 inside -printf format strings
- Fixed
-perminterpretation of permcopy actions (e.g.u=rw,g=r)
May 17, 2017
Bugfix release.
- Portability fixes that mostly affect GNU Hurd
- Implemented
-D exec - Made
-quitnot disable the implicit-print
April 24, 2017
This is the first release of bfs with support for all of GNU find's primitives.
Changes since 0.96:
- Implemented
-fstype - Implemented
-exec/-execdir ... + - Implemented BSD's
-X - Fixed the tests under Bash 3 (mostly for macOS)
- Some minor optimizations and fixes
March 11, 2017
73/76 GNU find features supported.
- Implemented -nouser and -nogroup
- Implemented -printf and -fprintf
- Implemented -ls and -fls
- Implemented -type with multiple types at once (e.g. -type f,d,l)
- Fixed 32-bit builds
- Fixed -lname on "symlinks" in Linux /proc
- Fixed -quit to take effect as soon as it's reached
- Stopped redirecting standard input from /dev/null for -ok and -okdir, as that violates POSIX
- Many test suite improvements
December 20, 2016
67/76 GNU find features supported.
- Fixed the build on macOS, and some other UNIXes
- Implemented
-regex,-iregex,-regextype, and BSD's-E - Implemented
-x(same as-mount/-xdev) from BSD - Implemented
-mnewer(same as-newer) from BSD - Implemented
-depth Nfrom BSD - Implemented
-sparsefrom FreeBSD - Implemented the
TandPsuffices for-size, for BSD compatibility - Added support for
-gid NAMEand-uid NAMEas in BSD
November 24, 2016
Bugfix release.
- Fixed #7 again
- Like GNU find, don't print warnings by default if standard input is not a terminal
- Redirect standard input from /dev/null for -ok and -okdir
- Skip . when -delete'ing
- Fixed -execdir when the root path has no slashes
- Fixed -execdir in /
- Support -perm +MODE for symbolic modes
- Fixed the build on FreeBSD
October 29, 2016
64/76 GNU find features supported.
- Spelling suggestion improvements
- Handle
-- - (Untested) support for exotic file types like doors, ports, and whiteouts
- Improved robustness in the face of closed std{in,out,err}
- Fixed the build on macOS
- Implement
-ignore_readdir_race,-noignore_readdir_race - Implement
-perm
September 4, 2016
62/76 GNU find features supported.
- Rework optimization levels
-O1- Simple boolean simplification
-O2- Purity-based optimizations, allowing side-effect-free tests like
-nameor-typeto be moved or removed
- Purity-based optimizations, allowing side-effect-free tests like
-O3(default):- Re-order tests to reduce the expected cost (TODO)
-O4- Aggressive optimizations that may have surprising effects on warning/error messages and runtime, but should not otherwise affect the results
-Ofast:- Always the highest level, currently the same as
-O4
- Always the highest level, currently the same as
- Color files with multiple hard links correctly
- Treat
-,), and,as paths when required to by POSIX)and,are only supported before the expression begins
- Implement
-D opt - Implement
-D rates - Implement
-fprint - Implement
-fprint0 - Implement BSD's
-f - Suggest fixes for typo'd arguments
May 27, 2016
60/76 GNU find features supported.
- Remove an errant debug
printf()from-used - Implement the
{} ;variants of-exec,-execdir,-ok, and-okdir
March 12, 2016
56/76 GNU find features supported.
- Color broken symlinks correctly
- Fix #7
- Fix
-daystart's rounding of midnight - Implement (most of)
-newerXY - Implement
-used - Implement
-size
February 23, 2016
53/76 GNU find features supported.
- New
make installandmake uninstalltargets - Squelch non-positional warnings for
-follow - Reduce memory footprint by as much as 64% by closing
DIR*s earlier - Speed up
bfsby ~5% by using a better FD cache eviction policy - Fix infinite recursion when evaluating
! expr - Optimize unused pure expressions (e.g.
-empty -a -false) - Optimize double-negation (e.g.
! ! -name foo) - Implement
-D statand-D tree - Implement
-O
February 14, 2016
Initial release.
51/76 GNU find features supported.