Fd Versions Save

A simple, fast and user-friendly alternative to 'find'

v8.3.1

2 years ago

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

  • Disable jemalloc on FreeBSD, see #896 (@xanderio)
  • Updated man page, see #912 (@rlue)
  • Updated zsh completions, see #932 (@tmccombs)

v8.3.0

2 years ago

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

  • Don't buffer command output from --exec when using a single thread. See #522
  • Add new -q, --quiet flag, see #303 (@Asha20)
  • Add new --no-ignore-parent flag, see #787 (@will459)
  • Add new --batch-size flag, see #410 (@devonhollowood)
  • Add opposing command-line options, see #595 (@Asha20)
  • Add support for more filesystem indicators in LS_COLORS, see https://github.com/sharkdp/lscolors/pull/35 (@tavianator)

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

3 years ago

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

v8.2.0

3 years ago

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

  • Added zsh completion files, see #654 and #189 (@smancill)

v8.1.1

3 years ago

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

3 years ago

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

4 years ago

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)

v7.5.0

4 years ago

Features

  • Added --one-file-system (aliases: --mount, --xdev) to not cross file system boundaries on Unix and Windows, see #507 (@FallenWarrior2k).
  • Added --base-directory to change the working directory in which fd is run, see #509 and #475 (@hajdamak).
  • fd will not use colored output if the NO_COLOR environment variable is set, see #550 and #551 (@metadave).
  • fd --exec will return exit code 1 if one of the executed commands fails, see #526 and #531 (@fusillicode and @Giuffre)

Bug Fixes

  • Fixed 'command not found' error when using zsh completion, see #487 (@barskern).
  • fd -L should include broken symlinks, see #357 and #497 (@tommilligan, @neersighted and @sharkdp)
  • Display directories even if we don't have permission to enter, see #437 (@sharkdp)

Changes

  • A flag can now be passed multiple times without producing an error, see #488 and #496 (@rootbid).
  • Search results are sorted when using the -X option to match the behaviour of piping to xargs, see #441 and #524 (@Marcoleni @crash-g).

v7.4.0

4 years ago

Performance improvements

  • Reduce number of stat syscalls, improving the performance for searches where file metadata is required (--type, --size, --changed-within, …), see #434 (@tavianator)
  • Use jemalloc by default, improving the performance for almost all searches, see #481. Note that Windows and *musl* builds do not profit from this.

Features

  • Added a new -g/--glob option to switch to glob-based searches (instead of regular expression based searches). This is accompanied by a new --regex option that can be used to switch back, if users want to alias fd="fd --glob". See #284
  • Added a new --path-separator <sep> option which can be useful for Windows users who want/need fd to use / instead of \, see #428 and #153 (@mookid)
  • Added support for hidden files on Windows, see #379
  • When fd is run with the --exec-batch/-X option, it now exposes the exit status of the command that was run, see #333.
  • Exit immediately when Ctrl-C has been pressed twice, see #423

Bugfixes

  • Make --changed-within/--changed-before work for directories, see #470

Other

  • Pre-built fd binaries should now be available for armhf targets, see #457 (@detly)
  • fd is now available on Alpine Linux, see #451 (@5paceToast)
  • fd is now in the officla FreeBSD repositories, see #412 (@t6)
  • Added OpenBSD install instructions, see #421 (@evitalis)
  • Added metadata to the Debian package, see #416 (@cathalgarvey)
  • fd can be installed via npm, see #438 (@pablopunk)

v7.3.0

5 years ago

Features

  • New --exec-batch <cmd>/-X <cmd> option for batch execution of commands, see #360 (@kimsnj). This allows you to do things like:
    fd … -X vim  # open all search results in vim (or any other editor)
    fd … -X ls -l  # view detailed stats about the search results with 'ls'
    fd -e svg -X inkscape  # open all SVG files in Inkscape
    
  • Support for 24-bit color codes (when specified via LS_COLORS) as well as different font styles (bold, italic, underline).

Changes

  • A few performance improvements, in particular when printing lots of colorized results to the console, see #370
  • The LS_COLORS handling has been "outsourced" to a separate crate (https://github.com/sharkdp/lscolors) that is now being used by other tools as well: fselect, lsd. For details, see #363.

Other

  • fd will be available in Ubuntu Disco DIngo (19.04), see #373 (@sylvestre)
  • This release should come with a static ARM binary (arm-unknown-linux-musleabihf), see #320 (@duncanfinney)
  • Various documentation improvements, see #389

Thanks

Special thanks to @alexmaco for his awesome work on refactoring and code improvements! (see #401, #398, and #383)