mercredi, novembre 26, 2008

Changer l'extension d'un fichier

Un petit bout de script qui m'a fait économiser pas mal de temps ;)
Change l'extension de tous les fichiers d'un répertoire et ses sous-répertoires (ici de .kml en .xml).
Ne fonctionne pas si vos noms de fichiers contiennent des '.'

require 'fileutils.rb'

Dir['**/*.kml'].each do |file|
    puts file
    filename = file.split('.')[0]
    # FileUtils.cp("#{filename}.kml", "#{filename}.xml")
    # FileUtils.mv("#{filename}.kml", "#{filename}.xml")
end

3 commentaires:

Martin Catty a dit…

Tu pourrais avoir quelquechose de plus générique en utilisant last au lieu de [0].
Ca te permettrait de traiter tes fichiers même s'ils ont des . dans leur nom, style a.b.kml.

Benjamin Francisoud a dit…

Oui je me doute qu'on peut faire mieux (last est une bonne idée, c'est plus clair que [0]).

Dans mon cas tout les noms de fichiers étaient du même style: xxx.kml donc mon script était suffisant ;)

Frederick Ros a dit…

Ou alors utiliser File.basename ...:

Dir['**/*.kml'].each do |file|
puts file
new_name = File.basename(file,'.kml') + ".xml"
# FileUtils.cp(file, new_file)
# FileUtils.mv(file, new_file )
end

mais aussi:

Dir['**/*.kml'].each {|file| FileUtils.cp(file, file.sub(/\.kml$/,'.xml')) }

;)