首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >GetDirectories -查找与模式不匹配的目录

GetDirectories -查找与模式不匹配的目录
EN

Stack Overflow用户
提问于 2013-06-25 06:32:04
回答 3查看 2.6K关注 0票数 1

我正在尝试处理140个目录。根据我的测试,有139个目录与我的文件模式(*abc.txt)匹配。

我正在尝试查找%1目录,以验证它实际上没有*abc.txt。

我该怎么做呢?

以下代码为我提供了140个目录号码:

代码语言:javascript
复制
var directoryCount = from subdirectory in Directory.GetDirectories(paramStartFilePath, "*", SearchOption.AllDirectories)
                     where Directory.GetDirectories(subdirectory).Length == 0
                     select subdirectory;

我收集基于模式的文件,如下所示:

代码语言:javascript
复制
dirInfoFiles= new DirectoryInfo(startFilePath);

IEnumerable<FileInfo> listFiles = dirInfoFiles.EnumerateFiles("*abc.txt, System.IO.SearchOption.AllDirectories);

我怎样才能找到不包含我的.txt文件的目录?

EN

回答 3

Stack Overflow用户

发布于 2013-06-25 06:40:11

总是有通过村方法来运行水箱:只需枚举*.*,然后排除不匹配的模式。

票数 2
EN

Stack Overflow用户

发布于 2013-06-25 06:39:34

如果您希望所有目录中至少包含一个名称以“abc”结尾的txt-file:

代码语言:javascript
复制
IEnumerable<DirectoryInfo> matchingDirs = dirInfoFiles.EnumerateDirectories("*.*", System.IO.SearchOption.AllDirectories)
   .Where(d => !d.EnumerateFiles().Any(f => f.Extension.ToUpper() == ".TXT" 
           && f.Name.EndsWith("abc", StringComparison.OrdinalIgnoreCase)));

或者同样的,换句话说,可能更具可读性:

代码语言:javascript
复制
IEnumerable<DirectoryInfo> matchingDirs = dirInfoFiles
    .EnumerateDirectories("*.*", System.IO.SearchOption.AllDirectories)
    .Where(d => !d.EnumerateFiles("*abc.txt").Any());
票数 1
EN

Stack Overflow用户

发布于 2013-06-25 07:21:43

这是我的观点。它返回第一个项目(或null),其中包含以您要查找的文本结尾的文件,并且不区分大小写。您可以删除lambda以使其更具可读性。

代码语言:javascript
复制
 var directory = Directory.GetDirectories((paramStartFilePath, "*", SearchOption.AllDirectories)
                    .FirstOrDefault(x => new DirectoryInfo(x).EnumerateFiles().Any(f => !f.Name.EndsWith("abc.txt",true,CultureInfo.CurrentCulture)));           
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17286253

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档