如何搜索包含特定文本字符串的文件?
答
谢谢你们!我感谢你的所有快速回复! 我试过Grep,但我需要阅读XML文件才能看到结果。
我刚刚发现我们可以在MSBuild扩展包中使用FilterByContent任务,它给我们提供了属性&项目的直接结果。如果您需要它,我想分享给您。使用示例如下:
<Target Name="ttt">
<ItemGroup>
<files Include="d:\temp\test\**" />
</ItemGroup>
<MSBuild.ExtensionPack.FileSystem.File TaskAction="FilterByContent" RegexPattern="abbcc" Files="@(files)" >
<Output TaskParameter="IncludedFileCount" PropertyName="out"/>
</MSBuild.ExtensionPack.FileSystem.File>
<Message Text="ttt:$(out)" />
</Target>
Nam。
答
目前还不清楚您是要搜索名称中的文本还是文件本身。
如果你只是想要的文件列表,他们的名称相匹配特定的(简单)的标准,我建议使用ItemGroup
这样的:
从的MSBuild的Contrib项目的Grep
TAKS会看像这样
<PropertyGroup>
<MSBuildContribCommonTasksAssembly>$(MSBuildExtensionsPath)\MSBuildContrib\MSBuildContrib.Tasks.dll</MSBuildContribCommonTasksAssembly>
</PropertyGroup>
<UsingTask TaskName="MSBuildContrib.Tasks.Grep" AssemblyFile="$(MSBuildContribCommonTasksAssembly)" Condition="Exists('$(MSBuildContribCommonTasksAssembly)')" />
<ItemGroup>
<FilesToSearch Include="**\*.cs" />
</ItemGroup>
<!-- very simple search -->
<Grep InputFiles="@(FilesToSearch)" OutputFile="out.xml" Pattern="Error" />
<!-- slightly more complicated search (search and extract info) -->
<Grep InputFiles="@(FilesToSearch)"
OutputFile="out.xml"
Pattern="// (?'Type'TODO|UNDONE|HACK): (\[(?'Author'\w*),(?'Date'.*)\])? (?'Text'[^\n\r]*)" />
Grep任务将生成out.xml文件,该文件随后可用于从中读取信息并在建立过程。
请不要将[MSBuild]放入标题中。你已经在标签中。 – 2010-03-29 04:42:57