Ruby on Rails:如何将所有文件从一个文件夹移动到另一个文件夹?

时间:2010-07-20 16:52:33

标签: ruby-on-rails ruby

但是,如果存在冲突,我还需要一种方法来重命名它们。

if exists? then file.name = "1-"+file.name 或类似的东西

3 个答案:

答案 0 :(得分:6)

也许这样的事情适合你:

origin = '/test_dir'
destination = '/another_test_dir'

Dir.glob(File.join(origin, '*')).each do |file|
  if File.exists? File.join(destination, File.basename(file))
    FileUtils.move file, File.join(destination, "1-#{File.basename(file)}")
  else
    FileUtils.move file, File.join(destination, File.basename(file))
  end
end

最好的问候。

答案 1 :(得分:3)

上面的代码有效,但是没有错,你正在使用if File.exists?(file),它正在检查文件是否在origin文件夹/或子文件夹中退出(这是没用的,因为它已经被读取,因为它已经存在)。您需要检查目标文件夹中是否已存在文件。由于这种语法,“else”永远不会被执行。并且所有文件都被命名为“1-filename”。 正确的是使用

if File.exists? File.join(destination, File.basename(file))

答案 2 :(得分:0)

另一种选择是在外壳中运行命令并处理响应:

command = "mv *.* #{ new_directory }/"

response = system command

处理现有文件名等是另一回事。