Visual Studio查找不包含X的文件

时间:2011-05-06 09:56:01

标签: regex visual-studio visual-studio-2008 find

我需要一种方法来列出 NOT 包含已知文本的所有文件。

该项目包含1000多个文件,我只想要那些不包含某些文本的文件。

我想到了正则表达式,但它没有这样的功能。

任何人都知道解决方案吗?

4 个答案:

答案 0 :(得分:18)

从命令提示符:

@for /r %f in (FILE_SPECIFIER) do @find "YOUR_STRING" "%f" > nul || echo %f

例如:

C:\web-trunk\Views>@for /r %f in (*.cshtml) do @find "Layout" "%f" > nul || echo %f

C:\data\web-trunk\Views\Account\RegisterPartial.cshtml
C:\data\web-trunk\Views\Admin\SiteInspector.cshtml
C:\data\web-trunk\Views\CandidateProfile\View.cshtml
C:\data\web-trunk\Views\Common\ContactFooterForInfoEmails.cshtml
C:\data\web-trunk\Views\Common\ContactFooterForInfoPages.cshtml
C:\data\web-trunk\Views\Common\ContactFooterForSalesEmails.cshtml
C:\data\web-trunk\Views\Common\ContactFooterForSalesPages.cshtml

答案 1 :(得分:4)

更新:正如Peter McVoy指出的那样,这个解决方案不起作用。它将返回误报(包含没有要搜索的文本的行的文件也将被打印)。 VS宏或自定义PowerShell脚本可能是要走的路。我稍后可能会重新回答这个问题。

作为参考,这是我的答案:

您可以在命令行中执行此操作:

findstr /S /V /M text_to_search_for *.cs

这将打印所有不包含文本的文件名

答案 2 :(得分:3)

您可以使用Find in Filesnotepad++功能。

步骤:

  1. 输入您要查找的字词,然后选择目录。
  2. 复制搜索结果。
  3. 过滤它以检索包含单词的文件列表
  4. 然后在C#中运行一个简单的循环,以获取此列表中不是的文件列表。这些是不包含单词的文件。
  5. 以下是获取文件列表的循环(在.cs文件中搜索)(可以优化):

    private void GetFileNamesNotContainingWord(string filePath, string searchDirectoryPath, string notContainingFilePath)
    {
        string[] lines = File.ReadAllLines(filePath);
        List<string> filesList = new List<string>();
    
        foreach (string line in lines)
        {
            if (!line.StartsWith("\t"))
            {
                filesList.Add(line.Substring(0, line.LastIndexOf('(')).Trim());
            }
        }
    
        List<string> notContainedFiles = new List<string>();
        foreach (FileInfo file in new DirectoryInfo(searchDirectoryPath).GetFiles("*.cs", SearchOption.AllDirectories))
        {
            if (!filesList.Contains(file.FullName))
            {
                notContainedFiles.Add(file.FullName);
            }
        }
    
        File.WriteAllLines(notContainingFilePath, notContainedFiles.ToArray());
    }
    

答案 3 :(得分:2)

从命令窗口('DOS框')中使用查找 findstr