私は自分自身のプログラミング演習として、rubyに基づいたファイル名前変更プログラムを作成しようとしています(Linuxでの名前変更は知っていますが、Rubyを学びたいので、名前変更はMacでは使用できません)。
以下のコードから、.include?
ファイル名にそのような検索パターンが含まれていることがわかっても、メソッドが常にfalseを返すという問題があります。include?
チェックをコメントアウトするとgsub()
、新しいファイル名がまったく生成されないようです(つまり、ファイル名は同じままです)。それで、誰かが私が間違ったことを見てみてください。よろしくお願いします!
予想される動作は次のとおりです。現在のフォルダにa1.jpg、a2.jpg、a3.jpgの3つのファイルがあると仮定すると、Rubyスクリプトは名前をb1.jpg、b2.jpg、b3.jpgに変更できるはずです。
#!/Users/Antony/.rvm/rubies/ruby-1.9.3-p194/bin/ruby
puts "Enter the file search query"
searchPattern = gets
puts "Enter the target to replace"
target = gets
puts "Enter the new target name"
newTarget = gets
Dir.glob("./*").sort.each do |entry|
origin = File.basename(entry, File.extname(entry))
if origin.include?(searchPattern)
newEntry = origin.gsub(target, newTarget)
File.rename( origin, newEntry )
puts "Rename from " + origin + " to " + newEntry
end
end