#include <string>
#include <filesystem>
namespace fs = std::experimental::filesystem;
using namespace std;
void DisplayDirTree(const fs::path& pathToShow, std::string fileExtension, std::vector<std::vector<std::string>> &fileDirVec)
{
if (fs::exists(pathToShow) && fs::is_directory(pathToShow))
{
std::vector<std::string> fileVec;
fileVec.clear();
for (const auto& entry : fs::directory_iterator(pathToShow))
{
auto filename = entry.path().filename();
if (fs::is_directory(entry.status()))
{
//cout << "[+] " << filename << "\n";
cout << "[+] " << entry << "\n";
DisplayDirTree(entry, fileExtension, fileDirVec);
cout << "\n";
}
else if (fs::is_regular_file(entry.status()))
{
//DisplayFileInfo(entry, lead, filename);
//cout << entry << " -> " << lead << " -> " << filename << endl
cout << " -> " << filename << " -> " << filename.extension().string() << endl;
std::string filenameExt = filename.extension().string();
std::transform(filenameExt.begin(), filenameExt.end(), filenameExt.begin(), (int(*)(int))tolow
std::transform(fileExtension.begin(), fileExtension.end(), fileExtension.begin(), (int(*)(int))tolower);
if (fileExtension == filenameExt)
{
std::string filePath = entry.path().string();
fileVec.push_back(filePath);
}
}
else
cout << " [?]" << filename << "\n";
}
if (fileVec.size() > 0)
{
fileDirVec.push_back(fileVec);
}
}
}