A simple, fast and user-friendly alternative to 'find'
Find a file
2017-06-02 21:54:28 +02:00
src Extend LS_COLORS parser 2017-06-02 21:54:28 +02:00
tests Change .gitignore to .ignore 2017-05-28 19:35:27 +02:00
.gitignore Re-write in rust 2017-05-12 11:50:54 +02:00
.travis.yml Add .travis.yml 2017-05-12 13:41:26 +02:00
Cargo.lock Switch to 'ignore', closes #4 2017-05-15 22:38:34 +02:00
Cargo.toml Re-structure code, add unit tests, use LS_COLORS 2017-06-01 22:46:15 +02:00
LICENSE Initial commit 2017-05-09 23:27:10 +02:00
README.md Update README.md 2017-06-02 20:42:55 +02:00

fd

Build Status

fd is a simple, fast and user-friendly alternative to find.

While it does not seek to mirror all of find's powerful functionality, it provides sensible (opinionated) defaults for 80% of the use cases.

Features

  • Convenient syntax: fd PATTERN instead of find -iname '*PATTERN*'.
  • Smart case: the search is case-insensitive by default. It switches to case-sensitive if the pattern contains an uppercase character*.
  • Colorized terminal output (similar to ls).
  • Ignores hidden directories and files, by default.
  • Ignores patterns from your .gitignore, by default.
  • Regular expressions.
  • Unicode-awareness.
  • The command name is 50% shorter* than find :-).

Demo

Demo

Colorized output

fd can colorize files by extension, just like ls. In order for this to work, the environment variable LS_COLORS has to be set. Typically, the value of this variable is set by the dircolors command which provides a convenient configuration format to define colors for different file formats. On most distributions, LS_COLORS should be set already. If you are looking for alternative, more complete (and more colorful) variants, see here or here.

Benchmark

A search in my home folder with ~80.000 subdirectories and ~350.000 files. The --hidden for fd is needed for a fair comparison, as find does this by default:

> time fd --hidden '\.jpg$' > /dev/null
0,39s user 0,40s system 99% cpu 0,790 total

> time find -iname '*.jpg' > /dev/null
0,36s user 0,42s system 98% cpu 0,789 total

Both tools found the exact same 5504 files and have a comparable performance (averaged over multiple runs), even though fd performs a regex search. If we do the same for find, it is significantly slower:

> time find -iregex '.*\.jpg$' > /dev/null
1,29s user 0,41s system 99% cpu 1,705 total

Install

With cargo, you can clone, build and install fd with a single command:

cargo install --git https://github.com/sharkdp/fd

The release page of this repository also includes precompiled binaries for Linux.

Development

cargo build --release