有没有办法在 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());
}
我正在寻找一个允许我进行类似操作的库:
./*
./*/*.*
./**
./**/*.*
./*.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());
}