将文件移动到动态创建的目录中

时间:2014-10-07 17:39:53

标签: ruby mv fileutils

我希望将某些.txt文件从一个目录移动到另一个目录,我正在动态创建包含版本号和日期/时间存储为变量:

require 'fileutils'
version = '2.1.6.0'
time = Time.now.strftime("%Y%m%d%H%M%S")
dir = FileUtils.makedirs ("ruby/bar/#{version}/#{time}")

FileUtils.mv 'foo.txt', dir

目录已成功创建,但是为移动文件部分返回了no implicit conversion of Array into String错误。

我尝试通过添加以下内容来修改代码:

dir = dir.to_s

但返回No such file or directory - (timings.txt, ["ruby/bar/2.1.6.0/20141007183424"])

我需要将其转换为字符串吗?或者甚至无法将文件移动到保存为变量的路径?

1 个答案:

答案 0 :(得分:3)

您可以将目录名称保存到变量中,然后重复使用它:

require 'fileutils'
version = '2.1.6.0'
time = Time.now.strftime("%Y%m%d%H%M%S")
dirname = "ruby/bar/#{version}/#{time}"
FileUtils.makedirs dirname

FileUtils.mv 'foo.txt', dirname

FileUtils.makedirs返回包含其创建的文件夹路径的数组。它是一个数组,因为您可以使用多个文件夹来调用它来创建:

FileUtils.makedir ["foo", "bar"]

如果您想重复使用FileUtils.makedirs结果,则必须执行以下操作:

require 'fileutils'
version = '2.1.6.0'
time = Time.now.strftime("%Y%m%d%H%M%S")
dir = FileUtils.makedirs "ruby/bar/#{version}/#{time}"

FileUtils.mv 'foo.txt', dir.first