How to rename a file in Ruby?

后端 未结 5 1045
南方客
南方客 2020-12-13 03:22

Here\'s my .rb file:

puts \"Renaming files...\"

folder_path = \"/home/papuccino1/Desktop/Test\"
Dir.glob(folder_path + \"/*\").sort.each do |f|
    filename         


        
相关标签:
5条回答
  • 2020-12-13 04:01

    Doesn't the folder_path have to be part of the filename?

    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."
    

    edit: it appears Mat is giving the same answer as I, only in a slightly different way.

    0 讨论(0)
  • 2020-12-13 04:03

    If you are on a linux file system you could try mv #{filename} newname

    You can also use File.rename(old,new)

    0 讨论(0)
  • 2020-12-13 04:04

    What about simply:

    File.rename(f, folder_path + "/" + filename.capitalize + File.extname(f))
    
    0 讨论(0)
  • 2020-12-13 04:11

    If you're running in the same location as the file you want to change

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

    Though honestly, I sometimes I don't see the point in using ruby at all...no need probably so long as your filenames are simply interpreted in the shell:

    `mv test.txt hope.txt`
    
    0 讨论(0)
  • 2020-12-13 04:25

    Don't use this pattern unless you are ready to put proper quoting around filenames:

    `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.

    0 讨论(0)
提交回复
热议问题