簡體   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