Here’s a quick look at a few handy command-line tools for finding files based on their contents:
fd is an improvement on the standard Linux
find tool. It’s both faster, and the options are more intuitive.
Here’s a working example to show Subject and Date for all emails updated within 10 days. The following may be run from the root of a MailDir folder:
# Find all files updated in the last 20 days and extract a Subject and Date fd --changed-within 20d --type f --exec grep -P "^(Subject|Date)" \; .
\; is used to identify the end of the
--exec command, and allows you to specify a path afterwards.
.gitignore files are honoured, which is especially helpful when searching through a repository.
ag - The Silver Searcher
The Silver Searcher or
ag is a really fast tool for scanning the contents of files. It’s apparently written as a faster replacement for
ack, and works in a similar way to grep.
By default, it will search for a pattern in all subfolders while ignoring files listed in
.gitignore, and can be configured to globally ignore specific files of your choice.
rg - RipGrep
This appears to be a more recent, similar app to
ag and is purportedly faster. It’s an easy drop-in replacement and I’ve already started using it.