我需要一种列出所有不包含已知文本的文件的方法。
该项目包含超过1000个文件,我只想要那些不包含某些文本的文件。
我考虑过使用正则表达式,但它没有这样的功能。
有人知道解决方法吗?
我需要一种列出所有不包含已知文本的文件的方法。
该项目包含超过1000个文件,我只想要那些不包含某些文本的文件。
我考虑过使用正则表达式,但它没有这样的功能。
有人知道解决方法吗?
从命令提示符:
@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
Microsoft 的文档 可以帮助您找到最适合您的文件搜索术语。
findstr /S /V /M text_to_search_for *.cs
这将打印出不包含指定文本的所有文件名。
.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());
}
使用命令窗口(“DOS框”)中的find或findstr。