У меня есть программа в системе Linux, которая генерирует файлы журнала данных с предсказуемыми именами файлов, к которым мне нужно получить доступ, но я должен сделать это через интерфейс C / C ++. Программа, обращающаяся к данным, должна иметь возможность указать путь к файлу с помощью регулярного выражения, чтобы указать определенные диапазоны имен файлов, и выполнить следующие действия:
Я использую их как проверки перед тем, как сжать и передать файлы. Как я могу сделать это в C / C ++?
Вы могли бы сделать что-то вроде этого:
#include <regex>
#include <string>
#include <experimental/filesystem>
// make using it sane
namespace fs = std::experimental::filesystem;
int main(int argc, char** argv)
{
// default to current directory
fs::path dir = argv[1] ? argv[1] : ".";
fs::directory_iterator dir_ent{dir};
fs::directory_iterator dir_end;
std::regex e{R"~(.*\.txt)~"};
std::smatch m;
decltype(fs::file_size("")) total_size = 0;
for(; dir_ent != dir_end; ++dir_ent)
{
// for some reason regex_match won't accept temporaries
std::string s = dir_ent->path().string();
if(!std::regex_match(s, m, e))
continue;
// deal with filepath here
total_size += fs::file_size(dir_ent->path());
// etc...
}
}
Других решений пока нет …