Skip to content

Releases: tavianator/bfs

Version 2.0

14 Oct 16:22
2.0
Compare
Choose a tag to compare
  • #8: New -exclude <expression> syntax to more easily and reliably filter out paths.
    For example:

    bfs -name config -exclude -name .git
    

    will 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 config
    

    But -exclude will 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: -nohidden is now equivalent to -exclude -hidden.
    This changes the behavior of command lines like

    bfs -type f -nohidden
    

    to 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/-xtype if they didn't always lead to an action

  • Implemented -xattrname to find files with a particular extended attribute (from macOS find)

  • Made -printf %l still respect the width specifier (e.g. %10l) for non-links, to match GNU find

  • Made bfs fail if -color is given explicitly and LS_COLORS can't be parsed, rather than falling back to non-colored output

Version 1.7

22 Apr 13:18
1.7
Compare
Choose a tag to compare
  • Fixed -ls printing 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 -s flag to sort results

Version 1.6

25 Feb 16:19
1.6
Compare
Choose a tag to compare
  • Implemented -newerXt (explicit reference times), -since, -asince, etc.
  • Fixed -empty to skip special files (pipes, devices, sockets, etc.)

Version 1.5.2

09 Jan 15:21
1.5.2
Compare
Choose a tag to compare
  • 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 -xattr on FreeBSD

Version 1.5.1

14 Sep 18:14
1.5.1
Compare
Choose a tag to compare
  • Added a warning to -mount, since it will change behaviour in the next POSIX revision
  • Added a workaround for environments that block statx() with seccomp(), like older Docker
  • Fixed coloring of nonexistent leading directories
  • Avoided calling stat() on all mount points at startup

Version 1.5

28 Jun 03:42
1.5
Compare
Choose a tag to compare
  • New -xattr predicate to find files with extended attributes
  • Fixed the -acl implementation on macOS
  • Implemented depth-first (-S dfs) and iterative deepening search (-S ids)
  • Piped -help output into $PAGER by default
  • Fixed crashes on some invalid LS_COLORS values

Version 1.4.1

06 May 14:26
1.4.1
Compare
Choose a tag to compare
  • 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

Version 1.4

16 Apr 12:40
1.4
Compare
Choose a tag to compare
  • New -unique option that filters out duplicate files (#40)
  • 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=target for coloring links like their targets
    • Fixed the order of fallbacks used when some color keys are unset
  • Add a workaround for incorrect file types for bind-mounted files on Linux (#37)

Version 1.3.3

10 Feb 20:52
1.3.3
Compare
Choose a tag to compare
  • Fixed unpredictable behaviour for empty responses to -ok/-okdir caused by an uninitialized string
  • Writing to standard output now causes bfs to fail if the descriptor was closed
  • Fixed incomplete file coloring in error messages
  • Added some data flow optimizations
  • Fixed -nogroup/-nouser in big directory trees
  • Added -type w for whiteouts, as supported by FreeBSD find
  • Re-wrote the -help message and manual page

Version 1.3.2

11 Jan 22:36
1.3.2
Compare
Choose a tag to compare
  • 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