【问题标题】:Moving files on external volume with Ruby fileutils?使用 Ruby fileutils 在外部卷上移动文件?
【发布时间】:2013-03-08 22:00:50
【问题描述】:

我遇到了一个感觉非常基本的错误,但我找不到任何关于我正在努力解决的问题的文档。代码如下:

require "fileutils"

def new_name(fn, dest = '/Volumes/External/Different\ Sublevel/Renamed', append = '_01')
    ext = File.extname(fn)
  File.join( dest, File.basename(fn, ext) + append + ext )
end

Dir[ '/Volumes/External/Example/Sublevels/**/*.xml' ].
select { |fn| File.file? fn }.
each   { |fn| FileUtils.cp fn, new_name(fn) }

我要做的就是移动一些文件(非破坏性)并附加文件名。它在一些本地文件上效果很好,但我做了多个级别的../../../ 来让它工作。指定外部驱动器有什么特别之处吗?

【问题讨论】:

  • 您能更准确地说明您的问题吗?你收到一些错误信息吗?顺便提一句。本地文件系统和安装在本地 fs 的外部卷之间没有区别。至少从 fileutils 的角度来看。
  • 我没有收到任何错误消息,只是一个空白终端盯着我看。根本没有运动或任何事情发生。我已经通过“puts”行来确保它正在读取,只是没有被识别或复制。

标签: ruby file-io file-handling fileutils


【解决方案1】:

您正在尝试传递带有未在撇号内解释的转义空格字符的字符串。您必须省略转义字符

'/Volumes/External/Different Sublevel/Renamed'

或者用双引号括起来

"/Volumes/External/Different\ Sublevel/Renamed".

用撇号创建的字符串只解释两个转义序列:反斜杠'\\' 和撇号本身'\''

Details about Ruby strings at wikibooks.org

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-02-28
    • 2010-09-29
    • 2012-02-27
    • 1970-01-01
    • 2011-12-12
    相关资源
    最近更新 更多