Ruby Programming

Maîtriser le renommage de fichiers en Ruby

Spread the love

La maîtrise de la manipulation de fichiers est cruciale pour tout développeur, et Ruby offre des solutions élégantes pour renommer les fichiers efficacement. Ce guide explore diverses techniques, du renommage de fichiers uniques aux opérations par lots complexes sur plusieurs répertoires.

Table des matières

Pourquoi renommer des fichiers par programme ?

Le renommage manuel de fichiers devient impraticable lorsqu’il s’agit de nombreux fichiers. L’automatisation offre plusieurs avantages :

  • Efficacité : Traitez des centaines ou des milliers de fichiers rapidement et avec précision.
  • Standardisation : Appliquez des conventions de nommage cohérentes pour une meilleure organisation.
  • Contrôle de version : Ajoutez des horodatages ou des numéros de version pour suivre les itérations des fichiers.
  • Intégration du flux de travail : Intégrez le renommage de fichiers en toute transparence dans les pipelines de traitement de données plus importants.
  • Nettoyage des données : Corrigez les fautes de frappe, supprimez les caractères indésirables et améliorez la capacité de recherche.

Renommer un seul fichier

Le scénario le plus simple consiste à renommer un seul fichier. La méthode File.rename de Ruby gère cela directement :


old_path = "/path/to/old_file.txt"
new_path = "/path/to/new_file.txt"

begin
  File.rename(old_path, new_path)
  puts "Fichier renommé avec succès !"
rescue Errno::ENOENT
  puts "Erreur : Fichier '#{old_path}' introuvable."
rescue Errno::EEXIST
  puts "Erreur : Le fichier '#{new_path}' existe déjà."
rescue => e
  puts "Une erreur s'est produite : #{e.message}"
end

Renommer des fichiers dans le même répertoire

Pour renommer plusieurs fichiers dans le même répertoire, utilisez Dir.glob pour sélectionner les fichiers correspondant à un motif :


directory = "/path/to/files"
pattern = "*.txt"

Dir.glob("#{directory}/#{pattern}") do |file|
  new_filename = file.gsub(/.txt$/, "_modified.txt") #Exemple de logique de renommage
  begin
    File.rename(file, new_filename)
    puts "Renommé : #{file} -> #{new_filename}"
  rescue => e
    puts "Erreur lors du renommage de #{file} : #{e.message}"
  end
end

Renommer des fichiers récursivement dans les sous-répertoires

Pour renommer des fichiers dans les sous-répertoires, utilisez le caractère générique `**` avec `Dir.glob` :


directory = "/path/to/files"
pattern = "*.txt"

Dir.glob("#{directory}/**/#{pattern}") do |file|
  new_filename = file.gsub(/.txt$/, "_modified.txt")
  begin
    File.rename(file, new_filename)
    puts "Renommé : #{file} -> #{new_filename}"
  rescue => e
    puts "Erreur lors du renommage de #{file} : #{e.message}"
  end
end

Renommer des fichiers par lots avec une logique personnalisée

Pour des scénarios plus complexes, utilisez un hachage pour mapper les anciens noms de fichiers aux nouveaux noms de fichiers :


directory = "/path/to/files"
renames = {
  "file1.txt" => "new_file1.txt",
  "file2.jpg" => "new_file2.jpg"
}

renames.each do |old_name, new_name|
  old_path = File.join(directory, old_name)
  new_path = File.join(directory, new_name)
  begin
    File.rename(old_path, new_path)
    puts "Renommé : #{old_path} -> #{new_path}"
  rescue => e
    puts "Erreur lors du renommage de #{old_path} : #{e.message}"
  end
end

Gestion robuste des erreurs

Incluez toujours une gestion complète des erreurs pour gérer correctement les problèmes tels que les fichiers introuvables ou les fichiers existants.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *