Переименовать метод Ruby;побег из толстой кишки - PullRequest
0 голосов
/ 05 марта 2012

Как избежать двоеточия при переименовании файлов в 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".

Возможно ли иметь двоеточие в строке для переименования файлов?

1 Ответ

0 голосов
/ 13 марта 2012

FYI - в NTFS двоеточие идентифицирует отдельный поток того же файла ... "Foo Bar: Foo.txt" идентифицирует файл "Foo Bar", поток "Foo.txt". Ссылка «Альтернативные потоки данных» (в настоящее время http://support.microsoft.com/kb/105763). AFIK эта функция не очень широко используется, хотя я видел, что она использовалась для тегирования файлов с данными сторонних производителей (я использую его для хранения файла sha1 для идентификации дублирования в поток *: sha1).

...