Skip to content

Releases: sharkdp/fd

v8.5.0

01 Nov 20:34
Compare
Choose a tag to compare

Features

Bugfixes

  • Fixed differences between piped / non-piped output. This changes fds behavior back to what we
    had before 8.3.0, i.e. there will be no leading ./ prefixes, unless --exec/-x,
    --exec-batch/-X, or --print0/-0 are used. --strip-cwd-prefix can be used to strip that
    prefix in those cases. See #1046, #1115, and #1121 (@tavianator)
  • fd could previously crash with a panic due to a race condition in Rusts standard library
    (see rust-lang/rust#39364). This has been fixed by switching to a different
    message passing implementation, see #1060 and #1146 (@tavianator)
  • fds memory usage will not grow unboundedly on huge directory trees, see #1146 (@tavianator)
  • fd returns an error when current working directory does not exist while a search path is
    specified, see #1072 (@vijfhoek)
  • Improved "command not found" error message, see #1083 and #1109 (@themkat)
  • Preserve command exit codes when using --exec-batch, see #1136 and #1137 (@amesgen)

Changes

  • No leading ./ prefix for non-interactive results, see above.
  • fd now colorizes paths in parallel, significantly improving performance, see #1148 (@tavianator)
  • fd can now avoid stat syscalls even when colorizing paths, as long as the color scheme doesn't
    require metadata, see #1148 (@tavianator)
  • The statically linked musl versions of fd now use jmalloc, leading to a significant performance
    improvement, see #1062 (@tavianator)

Other

v8.4.0

29 May 09:29
Compare
Choose a tag to compare

Features

Bugfixes

  • "Argument list too long" errors can not appear anymore when using --exec-batch/-X, as the command invocations are automatically batched at the maximum possible size, even if --batch-size is not given. See #410 and #1020 (@tavianator)

Changes

  • Directories are now printed with an additional path separator at the end: foo/bar/, see #436 and #812 (@yyogo)
  • The -u flag was changed to be equivalent to -HI (previously, a single -u was only equivalent to -I). Additional -u flags are still allowed, but ignored. See #840 and #986 (@jacksontheel)

Other

  • Added installation instructions for RHEL8, see #989 (@ethsol)

v8.3.2

29 Jan 15:57
Compare
Choose a tag to compare

Bufixes

  • Invalid absolute path on windows when searching from the drive root, see #931 and #936 (@gbarta)

v8.3.1

06 Jan 13:20
Compare
Choose a tag to compare

Bugfixes

  • Stop implying --no-ignore-parent when --no-vcs-ignore is supplied, see #907, #901, #908 (@tmccombs)
  • fd no longer waits for the whole traversal if the only matches arrive within max_buffer_time, see #868 and #895 (@tavianator)
  • --max-results=1 now immediately quits after the first result, see #867 (@tavianator)
  • fd -h does not panic anymore when stdout is closed, see #897

Changes

v8.3.0

26 Nov 21:21
Compare
Choose a tag to compare

Performance improvements

  • Colorized output is now significantly faster, see #720 and #853 (@tavianator)
  • Writing to stdout is now buffered if the output does not go to a TTY. This increases performance
    when the output of fd is piped to another program or to a file, see #885 (@tmccombs, original
    implementation by @sourlemon207)
  • File metadata is now cached between the different filters that require it (e.g. --owner,
    --size), reducing the number of stat syscalls when multiple filters are used; see #863
    (@tavianator, original implementation by @alexmaco)

Features

Bugfixes

  • Always show the ./ prefix for search results unless the output is a TTY or --strip-cwd-prefix is set, see #760 and #861 (@jcaplan)
  • Set default path separator to / in MSYS, see #537 and #730 (@aswild)
  • fd cannot search files under a RAM disk, see #752
  • fd doesn't show substituted drive on Windows, see #365
  • Properly handle write errors to devices that are full, see #737
  • Use local time zone for time functions (--change-newer-than, --change-older-than), see #631 (@jacobmischka)
  • Support --list-details on more platforms (like BusyBox), see #783
  • The filters --owner, --size, and --changed-{within,before} now apply to symbolic links
    themselves, rather than the link target, except when --follow is specified; see #863
  • Change time comparisons to be exclusive, see #794 (@jacobmischka)

Changes

  • Apply custom --path-separator to commands run with --exec(-batch) and --list-details, see #697 (@aswild)

Other

  • Many documentation updates

v8.2.1

07 Dec 18:03
Compare
Choose a tag to compare

No functional changes with respect to v8.2.0. Bugfix in the release process.

v8.2.0

06 Dec 15:06
Compare
Choose a tag to compare

Features

  • Add new --prune flag, see #535 (@reima)
  • Improved the usability of the time-based options, see #624 and #645 (@gorogoroumaru)
  • Add support for exact file sizes in the --size filter, see #669 and #696 (@Rogach)
  • fd now prints an error message if the search pattern requires a leading dot but
    --hidden is not enabled (Unix only), see #615

Bugfixes

  • Avoid panic when performing limited searches in directories with restricted permissions, see #678
  • Invalid numeric command-line arguments are silently ignored, see #675
  • Disable jemalloc on Android, see #662
  • The --help text will be colorless if NO_COLOR has been set, see #600 (@xanonid)

Changes

  • If LS_COLORS is not set (e.g. on Windows), we now provide a more comprehensive default which
    includes much more filetypes, see #604 and #682 (mjsir911).

Other

v8.1.1

25 May 13:39
Compare
Choose a tag to compare

Bugfixes

  • Support colored output on older Windows versions if either (1) --color=always is set or (2) the TERM environment variable is set. See #469

v8.1.0

19 May 16:51
Compare
Choose a tag to compare

Features

  • Add new --owner [user][:group] command-line option See #307 (pull #581) (@alexmaco)
    This can be used to filter results by ownership:
    # files matching the 'exercise' pattern, owned by john
    fd exercise --type file --owner john
    
    # files/directories that are not owned by john
    fd --owner '!john'
    
    # … owned by the 'students' group
    fd --owner ':students'
    
    # … owned by the 'students' group, but not by john
    fd --owner '!john:students'
    Note that the new option is currently not available on Windows.
  • Add support for a global ignore file (~/.config/fd/ignore on Unix), see #575 (@soedirgo)
  • Do not exit immediately if one of the search paths is missing, see #587 (@DJRHails)

Bugfixes

  • Reverted a change from fd 8.0 that enabled colors on all Windows terminals (see below) in order to support older Windows versions again, see #577. Unfortunately, this re-opens #469
  • Fix segfault caused by jemalloc on macOS Catalina, see #498
  • Fix --glob behavior with empty pattern, see #579 (@SeamusConnor)
  • Fix --list-details on FreeBSD, DragonFly BSD, OpenBSD and NetBSD. See #573 (@t6)

Changes

  • Updated documentation for --size, see #584

v8.0.0

16 Apr 08:30
Compare
Choose a tag to compare

Features

  • Add a new -l/--list-details option to show more details about the search results. This is
    basically an alias for --exec-batch ls -l with some additional ls options.
    This can be used in order to:
    • see metadata like permissions, owner, file size, modification times (#491)
    • see symlink targets (#482)
    • achieve a deterministic output order (#324, #196, #159)
  • Add a new --max-results=<count> option to limit the number of search results, see #472, #476 and #555
    This can be useful to speed up searches in cases where you know that there are only N results.
    Using this option is also (slightly) faster than piping to head -n <count> where fd can only
    exit when it finds the search results <count> + 1.
  • Add the alias -1 for --max-results=1, see #561. (@SimplyDanny).
  • Add new --type socket and --type pipe filters, see #511.
  • Add new --min-depth <depth> and --exact-depth <depth> options in addition to the existing option
    to limit the maximum depth. See #404.
  • Support additional ANSI font styles in LS_COLORS: faint, slow blink, rapid blink, dimmed, hidden and strikethrough.

Bugfixes

  • Preserve non-UTF8 filenames: invalid UTF-8 filenames are now properly passed to child-processes
    when using --exec, --exec-batch or --list-details. In fd's output, we replace non-UTF-8
    sequences with the "�" character. However, if the output of fd goes to another process, we
    print the actual bytes of the filename. For more details, see #558 and #295.
  • LS_COLORS entries with unsupported font styles are not completely ignored, see #552

Changes

  • Colored output will now be enabled by default on older Windows versions.
    This allows the use of colored output if the terminal supports it (e.g.
    MinTTY, Git Bash). On the other hand, this will be a regression for users
    on older Windows versions with terminals that do not support ANSI escape
    sequences. Affected users can use an alias fd="fd --color=never" to
    continue using fd without colors. There is no change of behavior for
    Windows 10. See #469.
  • When using --glob in combination with --full-path, a * character does not match a path
    separation character (/ or \\) anymore. You can use ** for that. This allows things like
    fd -p -g '/some/base/path/*/*/*.txt' which would previously match to arbitrary depths (instead
    of exactly two folders below /some/base/path. See #404.
  • "Legacy" support to use fd -exec (with a single dash) has been removed. Use fd -x or
    fd --exec instead.
  • Overall improved error handling and error messages.

Other

  • Package maintainers on MacOS and Windows might think about adding (GNU) ls as an optional dependency for fd to make full use of fds new -l/--list-details option. For MacOS, fd relies on gls which should be available via coreutils.
  • Korean translation of the README, see: 한국어 (@spearkkk)