C++でglobっぽいの
参考:c++ - Can I use a mask to iterate files in a directory with Boost? - Stack Overflow
boost使う
#include <boost/filesystem.hpp>
#include <boost/regex.hpp>
#include <boost/foreach.hpp>
void re_glob(boost::filesystem::path& target_path, std::string& re, std::vector< std::string >& results)
{
const boost::regex my_filter(re);
BOOST_FOREACH(
const boost::filesystem::path &path,
std::make_pair(
boost::filesystem::directory_iterator(target_path),
boost::filesystem::directory_iterator()))
{
if( !boost::filesystem::is_regular_file( path ) ) continue;
boost::smatch what;
// Skip if no match
if( !boost::regex_match( path.string(), what, my_filter ) ) continue;
results.push_back(path.string());
}
}
int main(){
std::vector< std::string > results;
boost::filesystem::path path("/home/ubuntu/someproject");
std::string re(".*py");
re_glob(path, re, results);
for(auto e: results){
std::cout << e << std::endl;
}
}