Posted on Fri, 09 Dec 2016 by adamlamers
A fast locate-like tool that you can carry with you in your dotfiles, that only uses basic binaries available on most systems. Searches through a compressed database of file locations on your hard drive that you can search with "flocate". I called it flocate to avoid conflicts on systems that have a proper installation of locate.
After reading Julia Evans' Post on how locate works and how to make it faster, I wanted to incorporate it into my dotfiles. So, I wrote some shell functions that make it easy to do. I also included gzip compression of the generated find database, on my Macbook it keeps a ~216MB file in the 20MB range, since there's a lot of repeated data.
function fupdatedb() {
if [ -f /tmp/flocate.db ]; then
rm /tmp/flocate.db
fi
find / 2>/dev/null | gzip > /tmp/flocate.db
}
function flocate() {
if [ ! -f /tmp/flocate.db ]; then
echo "flocate.db does not exist: run fupdatedb"
return -1
fi
zgrep $1 /tmp/flocate.db --color=auto
}