A simple, fast and user-friendly alternative to 'find'
This release is all about performance, which has been significantly improved, both due to optimizations in the underlying ignore
crate (#1429 by @tavianator), and in fd
itself (#1422, #1408, #1362 by @tavianator). Benchmark results show gains of 6-8x for full traversals of smaller directories (100k files) and up to 13x for larger directories (1M files).
The default number of threads is now constrained to be at most 64. This should improve startup time on systems with many CPU cores. (#1203, #1410, #1412, #1431) - @tmccombs and @tavianator
New flushing behavior when writing output to stdout, providing better performance for TTY and non-TTY use cases, see #1452 and #1313 (@tavianator).
.git/
is now ignored by default when using --hidden
/ -H
, use --no-ignore
/ -I
or --no-ignore-vcs
to override, see #1387 and #1396 (@skoriop)NO_COLOR
support, see #1421 (@acuteenvy)Special thanks to @tavianator for his incredible work on performance in the ignore
crate and fd
itself.
-1
properly conflicts with the exec family of options.--max-results
overrides -1
--quiet
properly conflicts with the exec family of options. This used to be the case, but broke during the switch to clap-derive--changed-within
now accepts a space as well as a "T" as the separator between date and time (due to update of chrono dependency)--no-ignore
was passed, but neither --unrestricted
nor --no-global-ignore-file
is passed. See #1209--and <pattern>
option to add additional patterns that must also be matched. See #315
and #1139 (@Uthar)--changed-after
as alias for --changed-within
, to have a name consistent with --changed-before
.--type executable
now additionally checks if
the file is executable by the current user, see #1106 and #1169 (@ptipiak)--type executable
/-t
now works on Windows, see #1051 and #1061 (@tavianator)fd
s 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 https://github.com/rust-lang/rust/issues/39364). This has been fixed by switching to a different
message passing implementation, see #1060 and #1146 (@tavianator)fd
s memory usage will not grow unboundedly on huge directory trees, see #1146 (@tavianator)--exec-batch
, see #1136 and #1137 (@amesgen)./
prefix for non-interactive results, see above.stat
syscalls even when colorizing paths, as long as the color scheme doesn't
require metadata, see #1148 (@tavianator)musl
versions of fd
now use jmalloc
, leading to a significant performance
improvement, see #1062 (@tavianator)--help
text, see #1086 (@scottchiefbaker)fd
handles command line options internally, see #1067 (@tmccombs)--exec <cmd>
instances, see #406 and #960 (@tmccombs)--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)foo/bar/
, see #436 and #812 (@yyogo)-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)