有没有办法在 C# 中递归地获取与通配符模式匹配的所有目录和文件?

Is there a way to fetch all directories and files matching a pattern with wildcards recursively in C#?

我正在寻找一个允许我进行类似操作的库:

./*
./*/*.*
./**
./**/*.*
./*.cs
./folder1/*.png

然后我需要将它传递给扫描文件系统的方法和returns这些路径:

C:\folder1, C:\folder2, C:\folder3
C:\folder1\file.cs,C:\folder1\test.dll,[...], C:\folder2\image.png, [...]
C:\folder1, C:\folder1\results, C:\folder2, [...]
C:\file1.cs, C:\file2.cs, C:\file3.cs
C:\folder1\image1.png, C:\folder1\image2.png, [...]

我知道 Directory.GetFiles()Directory.GetDirectories 存在并且它们接受过滤器,但我需要一种递归和灵活地执行此操作的方法和 returns 一组绝对路径.

一种选择是使用像 Glob library which unlike .net file globbing 这样的库来处理带通配符的文件夹。

var folder = @"Your path goes here";

string[] folderPatterns = { "**/bin", "**/obj" };
string[] filePatterns = { "**/*cs"};

var results = new List<string>();

foreach (var pattern in folderPatterns)
{
    results.AddRange(Glob.Directories(folder, pattern).ToArray());
}

foreach (var pattern in filePatterns)
{
    results.AddRange(Glob.Files(folder, pattern).ToArray());
}