使用Ruby FileUtils时出错

使用Ruby FileUtils时出错,ruby,scripting,Ruby,Scripting,我已经盯着这个看了好几个小时,但不确定我做错了什么。我正在尝试编写一个简单的脚本来从外部列表中的不同位置移动大约100个文件。应该足够简单,当我通过irb运行命令时,这一个文件的所有功能都正常,但是当运行脚本时,我得到了一个错误。这是我的剧本 #! /opt/local/bin/ruby require 'fileutils.rb' list_of_files = File.read "files_to_copy.txt" source_dir = "/Volumes/data/moved_f

我已经盯着这个看了好几个小时,但不确定我做错了什么。我正在尝试编写一个简单的脚本来从外部列表中的不同位置移动大约100个文件。应该足够简单,当我通过irb运行命令时,这一个文件的所有功能都正常,但是当运行脚本时,我得到了一个错误。这是我的剧本

#! /opt/local/bin/ruby
require 'fileutils.rb'

list_of_files = File.read "files_to_copy.txt"
source_dir = "/Volumes/data/moved_from_share/"
dest_dir = "/Volumes/data/testeroooo/"

list_of_files.each do |line|
  copy_from = source_dir + line
  copy_to = dest_dir + line
  puts copy_from
  puts copy_to
  puts
  FileUtils.cp_r(copy_from, copy_to)
end
下面是从“files_to_copy.txt”输入的一些示例:

最后,这是我的错误输出:

/Volumes/data/moved_from_share/Accounting PG/Accounts Payable/2011/2011_07/
/Volumes/data/testeroooo/Accounting PG/Accounts Payable/2011/2011_07/

/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/fileutils.rb:1255:in `copy': unknown file type: /Volumes/data/moved_from_share/Accounting PG/Accounts Payable/2011/2011_07/ (RuntimeError)
    from /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/fileutils.rb:451:in `copy_entry'
    from /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/fileutils.rb:1324:in `traverse'
    from /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/fileutils.rb:448:in `copy_entry'
    from /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/fileutils.rb:423:in `cp_r'
    from /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/fileutils.rb:1395:in `fu_each_src_dest'
    from /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/fileutils.rb:1411:in `fu_each_src_dest0'
    from /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/fileutils.rb:1393:in `fu_each_src_dest'
    from /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/fileutils.rb:422:in `cp_r'
    from copy_it.rb:14
    from copy_it.rb:8:in `each'
    from copy_it.rb:8

如果你有什么建议,我很乐意听听!谢谢大家!

您的文件列表可能包含
会计PG/Accounts Payment/2011/2011\u 07/
作为一个条目,它是一个目录,而不是一个文件。当您使用
cp\r
时,这应该可以很好地工作

您可以将其覆盖为仅复制文件(假设您的文件列表也包含子文件夹项):


首先,谢谢!。它确实包含那个条目,但当我通过IRB运行它时,我可以将整个目录复制到另一个位置,这就是我想要做的。。。此外,对于cp\r,文档会说“如果src是一个目录,那么这个方法会递归地复制它的所有内容。”。。。我不明白吗?再次感谢!您使用的是Ruby 1.8的哪个特定版本?我使用的是Ruby 1.8.7(2009-06-12 patchlevel 174)[universal-darwin10.0]谢谢:)
/Volumes/data/moved_from_share/Accounting PG/Accounts Payable/2011/2011_07/
/Volumes/data/testeroooo/Accounting PG/Accounts Payable/2011/2011_07/

/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/fileutils.rb:1255:in `copy': unknown file type: /Volumes/data/moved_from_share/Accounting PG/Accounts Payable/2011/2011_07/ (RuntimeError)
    from /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/fileutils.rb:451:in `copy_entry'
    from /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/fileutils.rb:1324:in `traverse'
    from /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/fileutils.rb:448:in `copy_entry'
    from /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/fileutils.rb:423:in `cp_r'
    from /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/fileutils.rb:1395:in `fu_each_src_dest'
    from /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/fileutils.rb:1411:in `fu_each_src_dest0'
    from /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/fileutils.rb:1393:in `fu_each_src_dest'
    from /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/fileutils.rb:422:in `cp_r'
    from copy_it.rb:14
    from copy_it.rb:8:in `each'
    from copy_it.rb:8
if File.file?(copy_from)
  FileUtils.cp_r(copy_from, copy_to)
end