繁体   English   中英

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

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

我正在寻找一个允许我使用类似于以下内容的库:

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

然后我需要将它传递给一个扫描文件系统并返回这些路径的方法:

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存在并且它们接受过滤器,但是我需要一种方法来递归和灵活地执行此操作并返回一组绝对路径。

一种选择是使用像Glob 库这样的库,它不像 .net 文件通配符使用通配符来处理文件夹。

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());
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM