通过目录中的特定模式识别最新文件

时间:2016-10-07 02:32:44

标签: c#

var directory = new DirectoryInfo("C:\example");
string pattern = "LOG" + "_" + "NA" + "_" + "3465";
var validFiles = directory.GetFiles("*.xml");

List<string> list = new List<string>();

foreach (var item in validFiles)
{
   string a = item.ToString();
   if (a.Contains(pattern))
   {
      list.Add(a);
   }
}

我想从指定的目录中获取具有上述模式的最新文件。我已经尝试了如上所述获取作为常见模式的文件,但是,我被困在<list>中的文件中获取最新文件。非常感谢您的帮助。

2 个答案:

答案 0 :(得分:1)

当您致电GetFiles时使用该模式,然后按创建日期或您感兴趣的任何字段排序。OrderByDescending确保最旧的文件位于最前面。

list = directory.GetFiles("*LOG_NA_3465*.xml")
                .OrderByDescending(fi => fi.CreationTime)
                .First();

在您的代码中,当您将结果存储在List<string>时,您不再处理FileInfo对象,并且您无法访问有关这些文件的任何详细信息。< / p>

答案 1 :(得分:1)

这是另一个步骤更多的步骤:

var d=new DirectoryInfo(@"C:\temp\logs");//Main Directory
var files=d.GetFiles("*.txt",SearchOption.AllDirectories);//Get .txt files
var patt=@"error-2016-09-"; //Pattern to search in file name

var matching = files.OrderByDescending(x=>x.CreationTimeUtc)
                       .Where(f => f.FullName.Contains(patt));

var latest=matching.First();//gets error-2016-09-29.txt