On m'a mis au défit de faire un script pour renommer un ensemble de divx dont le nom de fichier ressemble à [qqchose]01[autrechose]02[encore_qqchose].[une_extension]:
require 'ftools'
require 'fileutils'
from_directory = "divx"
to_directory = "divx_renamed"
extentions = %w{.srt .avi .mov .wmv}
prefix = "lost"
pattern = /[0-9]{2}/
Dir.mkdir(to_directory) unless File.exist?(to_directory)
Dir.foreach(from_directory) do |filename|
fullpath = from_directory + '/' + filename
file_ext = File.extname(fullpath)
if (File.file?(fullpath) && extentions.include?(file_ext))
puts "Changing: " + filename + "..."
# *[0-9]{2}*[0-9]{2}.ext
basename = File.basename(fullpath, file_ext)
basename =~ pattern
season = $&
# match against the rest of the basename
$' =~ pattern
episode = $&
new_basename = prefix + "-s" + season + "-e" + episode
puts new_basename
File.copy fullpath, to_directory + '/' + new_basename + file_ext
end
end
Si vous avez des idées pour le rendre plus court (mais toujours lisible)... les commentaires sont les bienvenus ;)