I've been using asdf
for many years now which means I
have projects and directories all over my machine with .tool-versions
files.
Many of them specify Ruby and Node versions. Some of them also include
PostgreSQL versions. I used to use asdf
to manage Postgres versions, but no
longer do that for new or active projects.
I want to find all the places that a .tool-versions
file declares postgres
as a tool. That way I can begin to clean up the left behind artifacts of
asdf-managed Postgres.
By combining fd
(a better find
) and
rg
(a better grep
), I'm able to
quickly track down the list of places.
$ fd --hidden .tool-versions ~/ | xargs rg postgres
/Users/jbranchaud/.local/state/nvim/undo/%Users%jbranchaud%.tool-versions: binary file matches (found "\0" byte around offset 9)
/Users/jbranchaud/code/fake-data/.tool-versions
2:postgres 13.1
/Users/jbranchaud/code/thirty_days/thirty_days_server/.tool-versions
1:postgres 13.1
/Users/jbranchaud/code/visualmode/.tool-versions
1:postgres 11.11
That first instance is a binary file as part of nvim
's undo history which I
can ignore. The other three are good results.
I tell the fd
command to not exclude hidden files as it looks for all
occurrences of .tool-versions
recursively from my home (~/
) directory. I
then pipe that list of files to xargs
which makes those filenames arguments
to the rg postgres
command.