chinmay chhajed
Posted on March 11, 2021
If you happen to be a frequent terminal user, you must be using the GNU find
command to know the location of files. But as the number of files increase, you can see a significant increase in runtime of find
. This is where the younger sibling fd
comes in picture ;)
According to the README of the project, some highlights of fd
are:
- Very fast due to parallelized directory traversal.
- Uses colors to highlight different file types (same as ls).
- The command name is 50% shorter than find :-)
For installation, most package managers like brew
, apt
, dnf
, pacman
, emerge
, zypper
and others have fd
package so you can just run the standard installation command. For more details, see the installation guide for your system.
Note that for Debian based distros like Ubuntu and others, you will have to install
fdfind
becausefd
is already used by a different package. You can see the guide how to usefd
on Ubuntu instead offdfind
. Spoiler alert: It's not about creating alias. xD
Personally, I am very impressed with the speed of fd
. When I had to wait for few seconds for find
to finish, fd
does the work within a second. Also, if you know regex , fd
is a big blessing as it uses regex for searching.
Coming to some numbers from comparison:
Number of all .png
files in my home directory searched with find
:
# Do a regex search with `find` with ignoring case
# and piping output to `wc -l` which will count number
# of lines in result
find ~/ -iregex '.*\.png$' 2>/dev/null | wc -l
# 13530 results found
Number of all .png
files in my home directory searched with fd
:
# Same regex, but now with `fd`
# -H flag to search in hidden directories
# -I to not ignore any files. `fd` ignores files like
# .gitignore, .ignore, .fdignore
fd -HI '.*\.png$' ~/ 2>/dev/null | wc -l
# 13530 results found
So the number of results are same in both cases.
Now let's see the time taken for each command.
-
find
:
time (find ~/ -iregex '.*\.png$' >/dev/null 2>&1)
# real 0m3.892s
# user 0m2.944s
# sys 0m0.937s
-
fd
:
time (fd -HI '.*\.png$' >/dev/null 2>&1)
# real 0m0.607s
# user 0m2.110s
# sys 0m1.779s
As you can see, fd
is more than 6 times faster than the GNU find
. When you find files frequently, the time saved is quite significant! Experiencing the power of fd
can be easily done with other programs like fzf
and dmenu
which I'll keep for another post ;).
Screenshots of above commands and their outputs for my system:
Posted on March 11, 2021
Join Our Newsletter. No Spam, Only the good stuff.
Sign up to receive the latest update from our blog.