[英]How to search for multiple text patterns in files / folders recusively
如何搜索一系列正則表達式,例如
Regex1,Regex2針對驅動器上的所有文件,例如C:\\?
我不知道有什么類似的現成解決方案。 您將必須遞歸枚舉所有文件,並且對於每個文件,您將需要將其內容加載到字符串中並針對該字符串應用正則表達式。
對於給定路徑下所有文件的遞歸枚舉,我使用以下函數:
public static IEnumerable<Fileinfo> EnumerateMatches( string directory, string filenameonly,
bool dirs_only )
{
DirectoryInfo directory_info = new DirectoryInfo( directory );
if( dirs_only )
{
DirectoryInfo[] infos = directory_info.GetDirectories( filenameonly );
foreach( DirectoryInfo info in infos )
{
string subpathonly = Path.Combine( directory, info.Name );
yield return new Fileinfo( info.FullName, true, info.LastWriteTime, 0 );
}
}
else
{
FileInfo[] infos = directory_info.GetFiles( filenameonly );
foreach( FileInfo info in infos )
{
yield return new Fileinfo( info.FullName, false, info.LastWriteTime, info.Length );
}
}
}
我不確定如何對文件內容進行實際的正則表達式匹配,但是這是您遞歸瀏覽文件夾的方法:
public void NavigateFolder(DirectoryInfo d)
{
foreach (FileInfo f in d.GetFiles())
{
//create a streamreader and try to match regex to file contents here
}
foreach (DirectoryInfo d in d.GetDirectories())
{
NavigateFolder(d);
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.