• # I'm bored

    Posté par . En réponse au message Supprimer automatiquement des fichiers doublons. Évalué à 2.

    Vu que je m'ennuyais, j'ai fait un petit script ruby.
    Le script assume que les noms des fichiers dupliqués finissent par '(<chiffre>).<extension>'.
    Ça va copier les fichiers dans un nouveau dossier (nommé par défaut 'tmp') sans touché aux fichiers d'origine.

    SOURCE = ARGV[0] || Dir.pwd
    DEST = File.join(SOURCE, ARGV[1] || '/tmp/')
    FILES = Dir[SOURCE + '/*']
    RE = Regexp.compile '^(.*?)(\(\d\))?$'
    if File.exists(DEST)
     puts "#{DEST} already exists. Exiting."
    else
     `mkdir #{DEST}`
    end
    def rootname(f)
     ext = File.extname(f)
     basename = File.basename(f, ext)
     basename.match(RE)[1].chomp(" ") + ext
    end
    FILES.group_by { |f| rootname f }
    .map do |name,files|
     f = files.sort_by {|f| File.size(f) }[0]
     File.rename(f, DEST+name)
    end
    

    Ça s'utilise comme ça:

    ruby /chemin/du/script.rb /chemin/du/dossier/contenant/les/fichiers/à/renommer/
    

    ou
    ruby /chemin/du/script.rb /chemin/du/dossier/contenant/les/fichiers/a/renommer/ /chemin/du/dossier/cible/