Search directories and files with a grep utility
To demonstrate traversing and searching directory structures, we create a simple utility that works like Unix grep. This utility uses recursive_directory_iterator
to traverse nested directories and searches files for matches with a regular expression.
How to do it…
In this recipe, we write a simple grep utility that traverses directories to search files with a regular expression:
- We start with some convenience aliases:
namespace fs = std::filesystem; using de = fs::directory_entry; using rdit = fs::recursive_directory_iterator; using match_v = vector<std::pair<size_t, std::string>>;
match_v
is a vector
of regular expression match results.
- We continue using our
formatter
specialization forpath
objects:template<> struct std::formatter<fs::path>: std::formatter<std::string> { template<typename FormatContext> auto format...