Как сказал Гео, с помощью gsub
вы можете легко преобразовать все недопустимые символы в действительные символы. Например:
file_names.map! do |f|
f.gsub(/[<invalid characters>]/, '_')
end
Вам необходимо заменить <invalid characters>
всеми возможными символами, которые могут содержаться в именах ваших файлов, которые не разрешены в вашей файловой системе. В приведенном выше коде каждый недопустимый символ заменяется на _
.
Википедия сообщает, что в NTFS запрещены следующие символы:
- U + 0000 (NUL)
- / (косая черта)
- \ (обратная косая черта)
- : (двоеточие)
- * (звездочка)
- ? (вопросительный знак)
- "(цитата)
- <(меньше чем) </li>
(больше чем)
- | (Труба)
Так что ваш gsub
звонок может быть примерно таким:
file_names.map! { |f| f.gsub(/[\x00\/\\:\*\?\"<>\|]/, '_') }
, который заменяет все недопустимые символы подчеркиванием.