Как избежать двоеточия при переименовании файлов в Ruby?Переименовать метод Ruby; escaping colon
Я следующий код (имена хэш с данными, уже заполненных):
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
@knut: Старый MacOS использовал ':' для папок, OSX использует '/', как и другие варианты Unix. Имя файла с двоеточием отображается как-есть в оболочке, но Finder преобразует двоеточие в косую черту для отображения. –
@muistooshort: Технически я уверен, что «:» по-прежнему используется как разделитель в HFS + - IIRC, он заменяется «/» на уровне POSIX (потому что это разделитель POSIX), а затем слой GUI меняет их назад. – Chuck