如何使用目录结构复制文件?

时间:2012-01-11 21:20:02

标签: ruby copy rake

有没有办法可以用目录结构复制文件?

这就是我所拥有的:

  files = FileList.new()
  files.include("#{HOST_DIR}/**/bin/*.dll")
  files.include("#{HOST_DIR}/**/bin/*.pdb")
  files.include("#{HOST_DIR}/**/bin/*.xml")
  files.include("#{HOST_DIR}/**/bin/**/*.xml")
  files.include("#{HOST_DIR}/**/TestData/*.*")
  FileUtils.cp(files,'c:/temp',:verbose => true)    

它将所有文件复制到一个文件夹c:/temp。我希望这些文件能够将目录结构保存在#{HOST_DIR}

更新

我得到了一个解决方案:

 files.each do |file|
    target = file.sub(SERVICEHOST_DIR,'c:/temp')
    FileUtils.mkdir_p(File.dirname(target))    
    FileUtils.cp_r(file,target,:verbose => true)
  end

有更好的吗?

1 个答案:

答案 0 :(得分:0)

我认为FileUtils#cp_r可以做到这一点。

dest = 'c:/temp'

files = Dir.chdir(HOST_DIR) do
  Dir.glob %w' **/bin/*.dll
               **/bin/*.pdb
               **/bin/*.xml
               **/bin/**/*.xml
               **/TestData/*.*
             '
end

FileUtils.cp_r files, dest, :verbose => true