src | ||
.gitignore | ||
.travis.yml | ||
Cargo.lock | ||
Cargo.toml | ||
LICENSE | ||
README.md |
fd
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 offind -iname '*PATTERN*'
. - Smart case: the search is case-insensitive by default. It switches to case-sensitive if the pattern contains an uppercase character*.
- Ignores hidden directories and files by default.
- Colorized terminal output (similar to ls).
- Regular expressions by default.
- Unicode-aware.
- The command name is 50% shorter* than
find
:-).
Demo
Colorized output
fd can colorize files by extension, just like ls. In order for
this to work, you need to set up a ~/.dir_colors
file. The easiest
way is to call
dircolors --print-database > ~/.dir_colors
More complete (and more colorful) alternatives can be found 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