Ruby Programming

Dominando el Cambio de Nombre de Archivos en Ruby

Spread the love

Dominar la manipulación de archivos es crucial para cualquier desarrollador, y Ruby ofrece soluciones elegantes para renombrar archivos de manera eficiente. Esta guía explora varias técnicas, desde renombrar archivos individuales hasta operaciones por lotes complejas en varios directorios.

Tabla de Contenido

¿Por qué renombrar archivos programáticamente?

Renombrar archivos manualmente se vuelve impráctico cuando se trata de numerosos archivos. La automatización ofrece varias ventajas:

  • Eficiencia: Procesa cientos o miles de archivos de forma rápida y precisa.
  • Estandarización: Aplica convenciones de nomenclatura consistentes para una mejor organización.
  • Control de versiones: Agrega marcas de tiempo o números de versión para realizar un seguimiento de las iteraciones de los archivos.
  • Integración de flujo de trabajo: Integra sin problemas el cambio de nombre de archivos en canalizaciones de procesamiento de datos más grandes.
  • Limpieza de datos: Corrige errores tipográficos, elimina caracteres no deseados y mejora la capacidad de búsqueda.

Renombrar un solo archivo

El escenario más simple implica renombrar un solo archivo. El método File.rename de Ruby maneja esto directamente:


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

begin
  File.rename(old_path, new_path)
  puts "Archivo renombrado correctamente!"
rescue Errno::ENOENT
  puts "Error: Archivo '#{old_path}' no encontrado."
rescue Errno::EEXIST
  puts "Error: El archivo '#{new_path}' ya existe."
rescue => e
  puts "Ocurrió un error: #{e.message}"
end

Renombrar archivos en el mismo directorio

Para renombrar varios archivos dentro del mismo directorio, use Dir.glob para seleccionar archivos que coincidan con un patrón:


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

Dir.glob("#{directory}/#{pattern}") do |file|
  new_filename = file.gsub(/.txt$/, "_modified.txt") #Ejemplo de lógica de renombramiento
  begin
    File.rename(file, new_filename)
    puts "Renombrado: #{file} -> #{new_filename}"
  rescue => e
    puts "Error al renombrar #{file}: #{e.message}"
  end
end

Renombrar archivos recursivamente en subdirectorios

Para renombrar archivos en subdirectorios, use el comodín `**` con `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 "Renombrado: #{file} -> #{new_filename}"
  rescue => e
    puts "Error al renombrar #{file}: #{e.message}"
  end
end

Renombrar archivos por lotes con lógica personalizada

Para escenarios más complejos, use un hash para asignar nombres de archivo antiguos a nombres de archivo nuevos:


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 "Renombrado: #{old_path} -> #{new_path}"
  rescue => e
    puts "Error al renombrar #{old_path}: #{e.message}"
  end
end

Manejo robusto de errores

Siempre incluya un manejo de errores completo para gestionar con elegancia problemas como archivos no encontrados o archivos existentes.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *