63

这是我的 .rb 文件:

puts "Renaming files..."

folder_path = "/home/papuccino1/Desktop/Test"
Dir.glob(folder_path + "/*").sort.each do |f|
    filename = File.basename(f, File.extname(f))
    File.rename(f, filename.capitalize + File.extname(f))
end

puts "Renaming complete."

这些文件从它们的初始目录移动到 .rb 文件所在的位置。我想当场重命名文件,而不移动它们。

关于做什么的任何建议?

4

5 回答 5

102

简单地说:

File.rename(f, folder_path + "/" + filename.capitalize + File.extname(f))
于 2011-04-03T15:29:32.173 回答
27

文件夹路径不是必须是文件名的一部分吗?

puts "Renaming files..."

folder_path = "/home/papuccino1/Desktop/Test/"
Dir.glob(folder_path + "*").sort.each do |f|
  filename = File.basename(f, File.extname(f))
  File.rename(f, folder_path + filename.capitalize + File.extname(f))
end

puts "Renaming complete."

编辑:看来 Mat 给出的答案与我相同,只是方式略有不同。

于 2011-04-03T15:30:57.040 回答
20

如果您在与要更改的文件相同的位置运行

File.rename("test.txt", "hope.txt")

虽然老实说,我有时根本看不到使用 ruby​​ 的意义......只要你的文件名在 shell 中简单地解释,可能就不需要了:

`mv test.txt hope.txt`
于 2012-10-12T01:51:55.870 回答
1

如果您使用的是 linux 文件系统,则可以尝试mv #{filename} newname

您也可以使用 File.rename(old,new)

于 2011-04-03T15:28:15.490 回答
0

除非您准备好在文件名周围加上正确的引号,否则不要使用此模式:

`mv test.txt hope.txt`

Indeed, suppose instead of "hope.txt" you have a file called "foo the bar.txt", the result will not be what you expect.

于 2018-02-14T11:41:56.297 回答