ruby - 如何使用包含/字符的 Ruby 重命名文件?

标签 ruby file special-characters rename

我编写了一个小的 Ruby 命令行应用程序,用于在我的 Mac 硬盘驱动器上组织电视节目。鉴于电视剧集标题的性质,有些剧集包含 / 字符。

在 Mac 上,文件系统实际上允许我编写这个文件,如果我用 / 字符手动重命名文件,一切都很好。

当 Ruby 的 File.rename 在我的脚本中运行时,我只是得到一个 No such file or directory 错误,因为 Ruby 试图读取 / 在文件名中作为一个应该存在的文件夹。

这是一个例子:

输出路径是/TV/Showname/Season 1/Showname - 1x07 - 5/1.mp4

现在,与其查找文件夹 /Showname - 1x07 - 5/ 并写入其中的 1.mp4 文件,不如告诉 ruby​​ 简单地取文件名 (Showname - 1x07 - 5/1.mp4) 并将其按原样写入 Season 1 文件夹?

感谢阅读。

最佳答案

这很奇怪,但是因为反斜杠被用作文件分隔符,它在 Ruby 使用的文件名中被转换为冒号。因此,要重命名您的文件,请将名称中的正斜杠替换为冒号。

所以你会这样写:

File.rename("Showname - 1x07 - 5:1.mp4", "/TV/Showname/Season 1/Showname - 1x07 - 5:1.mp4")

关于ruby - 如何使用包含/字符的 Ruby 重命名文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12018000/

相关文章:

haskell - 在 Haskell 中将 "->"s 替换为 "→"s,将 "=>"s 替换为 "⇒"s 等等

在字符类中使用 OR 的 Ruby 正则表达式

ruby - Ruby 中的关联数组

java - Rails 应用程序,但所有数据层都使用基于 json/xml 的 Web 服务

java - 如何检查一行是否包含特殊字符?

php - 如何检索错误的字符集编码字符串?

ruby - 不可变与符号只能有一个实例之间有什么区别?

java - 缓冲区从文件读取音频数据给出零

python - 如何从重命名脚本中提取 PDF 文档的标题?

javascript - 如何将其设置为 "save as HTML"而不是 "download as HTML"?