在msbuild中,我可以删除某些目录中的部分文件,如
<ItemGroup>
<FilesToDelete Include="$(DeploymentDir)\**\*" exclude="$(DeploymentDir)\**\*.log"/>
</ItemGroup>
<Delete Files="@(FilesToDelete)" />
它将删除除* .txt
以外的所有文件有些rake任务我可以类似吗?
答案 0 :(得分:11)
Ruby内置了类以简化:
Dir['deployment_dir/**/*'].delete_if { |f| f.end_with?('.txt') }
然而,对于一些内置任务,rake有这方面的帮助。改编自API docs,您可以选择如下文件:
files_to_delete = FileList.new('deployment_dir/**/*') do |fl|
fl.exclude('*.txt')
end
然后您可以将其提供给删除任务。
更好的是,您可以使用内置的CLEAN / CLOBBER任务:
# Your rake file:
require 'rake/clean'
# [] is alias for .new(), and we can chain .exclude
CLEAN = FileList['deployment_dir/**/*'].exclude('*.txt')
然后你可以在cmd线上说:
rake clean
阅读tutorial。
答案 1 :(得分:1)
@adzdavies的回答很好,但是由于CLEAN
是一个常量,因此分配给CLEAN
会产生以下警告:
warning: already initialized constant CLEAN
您应该改用CLEAN
的实例方法。它是Rake::FileList,因此您可以在Rakefile中添加以下内容:
require 'rake/clean'
# this is untested, but you get the idea
CLEAN.include('deployment_dir/**/*').exclude('*.txt')
然后运行:
rake clean