将一个目录的内容复制到另一个
使用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_r
的cp_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')