使用Ruby,如何将一个目录的内容复制到另一个目录?例如,给定(非空)目录A和B:
A/
bar
foo
B/
jam
jim
Run Code Online (Sandbox Code Playgroud)
我想将A中的所有内容复制到B中,从而导致:
A/
bar
foo
B/
bar
foo
jam
jim
Run Code Online (Sandbox Code Playgroud)
我无法使用,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"]
Run Code Online (Sandbox Code Playgroud)
是否有比以下更好(更短,更有效)的答案?
Dir['A/*'].each{ |f| FileUtils.cp(f,"B") }
Run Code Online (Sandbox Code Playgroud)
the*_*ore 47
使用FileUtil的cp_r方法,只需/.在源目录参数的末尾添加.
以下Ruby doc的示例.假设当前工作目录有src和dest目录.
FileUtils.cp_r 'src/.', 'dest'
Run Code Online (Sandbox Code Playgroud)
http://www.ruby-doc.org/stdlib-1.9.3/libdoc/fileutils/rdoc/FileUtils.html#method-c-cp_r
bta*_*bta 16
使用时FileUtils.cp_r,请注意第一个参数也可以是文件列表.尝试类似的东西:
FileUtils.cp_r(Dir.glob('A/*'), 'B')
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
20141 次 |
| 最近记录: |