Rubyでファイルの名前を変更するときに、コロンをどのようにエスケープしますか? Iコードを以下た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"
となります。
バックスラッシュでコロンでエスケープしようとしましたが、出力が次のように表示されるため、動作していません。。
名前を変更するファイルの文字列にコロンを付けることはできますか? FYI
どのシステムをお使いですか? Windowsはファイル名に ':'を許さない。いくつかのOS(私はMacと思う)は、フォルダの区切り記号として ':'を使います。 Rubyは ':'を新しいフォルダとして解釈しているようです。 – knut
@knut:古いMacOSはフォルダに ':'を使い、OSXはUnixの他のフレーバーと同様に '/'を使います。コロンの付いたファイル名はそのままシェルに表示されますが、Finderは表示目的でコロンをスラッシュに変換します。 –
@muistooshort:技術的には、HFS + - IIRCの区切り記号として技術的にはまだ使用されていますが、POSIXレベルで "/"とスワップされています(POSIXのセパレータなので)。バック。 – Chuck