使用Ruby,如何将一个目录的contents复制到另一个目录?例如,给定(非空)目录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") }

推荐答案

使用FileUtil的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

Ruby相关问答推荐

如何使用Ruby range?

Ruby - 将两个哈希与一些相似的键合并

Symfony 2assets资源过滤器异常中的指南针

如果 Java 人go Scala,C# go F#,那么 Ruby 人go 哪里寻求函数式?

是否有Ruby单行如果 x 则返回?

为什么 ruby​​ 在 Windows 上这么慢?

确保如何在 ruby​​ 中工作

进程的 pid、ppid、uid、euid、gid 和 egid 有什么区别?

GET 和 POST 请求的相同 Rails 4 路由

Rails:Date.today 是 UTC 吗?

如何声明 RSpec 中示例之间共享的变量?

如何强制 Ruby 显示完整的堆栈跟踪?

如何在不使用循环的情况下按数组中的计数分组

当我将参数传递给脚本时,使用 gets() 会出现没有这样的文件或目录错误

我们什么时候在 Rails 中使用 "||=" 运算符?它的意义是什么?

如何在没有警告的情况下重新定义 Ruby 常量?

如何使用 Ruby 运行命令五次?

使用 RSpec 测试哈希内容

如何在 Ruby 中创建整数循环?

通过多个分隔符拆分字符串