0
在Ruby中重命名文件時,如何轉義冒號?Ruby的重命名方法;轉義冒號
我有以下代碼(名稱與已填充在數據的散列):
new_filename = ""
counter = 0
Dir.glob(folder_path + "/*").each do |f|
numbering = names.index(names.values.sort[counter])
new_filename = numbering + " - " + names.values.sort[counter]
puts "New file name: " + new_filename
File.rename(f, folder_path + "/" + new_filename + File.extname(f))
counter += 1
end
puts "Renaming complete."
的new_filename
輸出是正確的,例如"Foo - Bar: Foo.txt"
。重命名文件時,該文件具有以下格式:"Foo - Bar/ Foo.txt"
。
我試着用反斜線冒號轉義,但似乎不起作用,因爲我的輸出如下所示:"Foo - Bar/\ Foo.txt"
。
是否可以在重命名文件的字符串中有冒號?
你使用哪個系統? Windows不允許在文件名中使用':'。某些操作系統(我認爲Mac)使用':'作爲文件夾的分隔符。似乎Ruby將':'解釋爲一個新文件夾。 – knut 2012-03-04 23:24:10
@knut:舊的MacOS使用':'作爲文件夾,OSX使用像其他類型Unix一樣的'/'。帶有冒號的文件名顯示在shell中,但Finder會將冒號轉換爲斜線以便顯示。 – 2012-03-04 23:27:16
@ muistooshort:從技術上講,我很確定「:」仍然用作HFS + - IIRC中的分隔符,它在POSIX級別與「/」交換(因爲這是POSIX分隔符),然後GUI層交換它們背部。 – Chuck 2012-03-04 23:41:04