C# GetDirectory-查找与模式不匹配的目录

C# GetDirectory-查找与模式不匹配的目录,c#,getdirectories,C#,Getdirectories,我有140个目录,我正试图处理。根据我的测试,有139个目录与我的文件模式(*abc.txt)匹配 我试图找到1目录,以验证它实际上没有*abc.txt 我该怎么做 以下代码给出了140个目录编号: var directoryCount=来自Directory.GetDirectories(paramStartFilePath,*,SearchOption.AllDirectories)中的子目录 where Directory.getdirectory(subdirectory).Length

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

我试图找到1目录,以验证它实际上没有*abc.txt

我该怎么做

以下代码给出了140个目录编号:

var directoryCount=来自Directory.GetDirectories(paramStartFilePath,*,SearchOption.AllDirectories)中的子目录
where Directory.getdirectory(subdirectory).Length==0
选择子目录;
我正在根据以下模式收集文件:

dirInfoFiles=newdirectoryinfo(startFilePath);
IEnumerable listFiles=dirInfoFiles.EnumerateFiles(“*abc.txt,System.IO.SearchOption.AllDirectories”);

如何找到不包含我的.txt文件的目录?

如果希望所有目录都不包含至少一个名称以“abc”结尾的txt文件,请执行以下操作:

IEnumerable matchingDirs=dirInfoFiles.EnumerateDirectories(“**”,System.IO.SearchOption.AllDirectories)
.Where(d=>!d.EnumerateFiles().Any(f=>f.Extension.ToUpper()==”.TXT)
&&f.Name.EndsWith(“abc”,StringComparison.OrdinalIgnoreCase));
或者换言之,可能更具可读性:

IEnumerable<DirectoryInfo> matchingDirs = dirInfoFiles
    .EnumerateDirectories("*.*", System.IO.SearchOption.AllDirectories)
    .Where(d => !d.EnumerateFiles("*abc.txt").Any());
IEnumerable matchingDirs=dirInfoFiles
.EnumerateDirectory(“**”,System.IO.SearchOption.AllDirectory)
.Where(d=>!d.EnumerateFiles(“*abc.txt”).Any());

始终存在通过村庄方法运行坦克的方法:只需枚举
*.
,然后排除不匹配的模式。

这是我的想法。它返回第一项(或null)包含以您要查找的文本结尾的文件,不区分大小写。您可以删除lambda以使其更可读

 var directory = Directory.GetDirectories((paramStartFilePath, "*", SearchOption.AllDirectories)
                    .FirstOrDefault(x => new DirectoryInfo(x).EnumerateFiles().Any(f => !f.Name.EndsWith("abc.txt",true,CultureInfo.CurrentCulture)));           
 var directory = Directory.GetDirectories((paramStartFilePath, "*", SearchOption.AllDirectories)
                    .FirstOrDefault(x => new DirectoryInfo(x).EnumerateFiles().Any(f => !f.Name.EndsWith("abc.txt",true,CultureInfo.CurrentCulture)));