将一个目录的内容复制到另一个

使用Ruby,如何将一个目录的内容复制到另一个目录? 例如,给定的(非空的)目录A和B:

A/ bar foo B/ jam jim 

我想复制从A到B的所有内容,导致:

 A/ bar foo B/ bar foo jam jim 

我不能使用FileUtils.cp_r因为它复制目录本身:

 irb(main):001:0> require 'fileutils' #=> true irb(main):002:0> Dir['**/*'] #=> ["A", "A/bar", "A/foo", "B", "B/jam", "B/jim"] irb(main):003:0> FileUtils.cp_r('A','B') #=> nil irb(main):004:0> Dir['**/*'] #=> ["A", "A/bar", "A/foo", "B", "B/A", "B/A/bar", "B/A/foo", "B/jam", "B/jim"] 

有没有比以下更好(更短,更有效)的答案?

 Dir['A/*'].each{ |f| FileUtils.cp(f,"B") } 

使用cp_rcp_r方法,只需添加/. 在源目录参数的末尾。

从下面的Ruby文档的例子。 假定当前的工作目录有src&dest目录。

  FileUtils.cp_r 'src/.', 'dest' 

http://www.ruby-doc.org/stdlib-1.9.3/libdoc/fileutils/rdoc/FileUtils.html#method-c-cp_r

尝试:

 FileUtils.cp_r(Dir['A/*'],'B') 

使用FileUtils.cp_r ,请注意第一个参数也可以是一个文件列表。 尝试像这样:

 FileUtils.cp_r(Dir.glob('A/*'), 'B')