簡體   English   中英

如何在文件/文件夾中搜索多個文本模式

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM