0

我试图找出一种重命名单个文件扩展名的有效方法。我在网上查看了一堆方法,但它们似乎都是用于批量转换文件,使用基本的.eachdo 块。在这些块中,我注意到 FileUtils 被大量使用,但我认为这是因为给出了一个目录路径,它的使用迫在眉睫。我知道如何使用批量方法,我只是不确定单个方法,例如:def convert_file_extension(input_file) ... end

任何帮助是极大的赞赏!

4

3 回答 3

1

这个语句可以解决问题:

def self.rename_file(input_file, output_file)
  File.rename(input_file, output_file) if !File.exist?(output_file)
end

感谢@7stud 和@ostapische!

于 2013-08-08T13:18:38.607 回答
0
def change_ext(fname, new_ext)
  i = fname.rindex(".") 
  i ? (fname[0...i] + new_ext) : (fname + new_ext)
end

puts change_ext("/usr/local/file", ".xyz")
puts change_ext("/usr/local/file.txt", ".xyz")


--output:--
/usr/local/file.xyz
/usr/local/file.xyz
于 2013-08-08T10:26:05.633 回答
0

添加到上面给出的解决方案:

您可以将文件路径分解为各个组件:File.dirname 产生目录部分,File.extname 返回扩展名。File.basename 只为您提供文件名,可以选择删除扩展名。这样,您也可以轻松地构造新的文件名(当然,使用 then File.rename 来实际更改文件名)。

于 2015-08-12T08:24:53.057 回答