Ruby Programming

Dominando a Renomeação de Arquivos em Ruby

Spread the love

Dominar a manipulação de arquivos é crucial para qualquer desenvolvedor, e Ruby oferece soluções elegantes para renomear arquivos eficientemente. Este guia explora várias técnicas, desde renomeações de arquivos únicos até operações complexas em lote em vários diretórios.

Sumário

Por que renomear arquivos programaticamente?

A renomeação manual de arquivos torna-se impraticável ao lidar com inúmeros arquivos. A automação oferece várias vantagens:

  • Eficiência: Processe centenas ou milhares de arquivos de forma rápida e precisa.
  • Padronização: Imponha convenções de nomenclatura consistentes para melhor organização.
  • Controle de versão: Anexe timestamps ou números de versão para rastrear iterações de arquivos.
  • Integração de fluxo de trabalho: Integre perfeitamente a renomeação de arquivos em pipelines de processamento de dados maiores.
  • Limpeza de dados: Corrija erros de digitação, remova caracteres indesejados e melhore a capacidade de pesquisa.

Renomeando um único arquivo

O cenário mais simples envolve renomear um único arquivo. O método File.rename do Ruby trata disso diretamente:


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

begin
  File.rename(old_path, new_path)
  puts "Arquivo renomeado com sucesso!"
rescue Errno::ENOENT
  puts "Erro: Arquivo '#{old_path}' não encontrado."
rescue Errno::EEXIST
  puts "Erro: Arquivo '#{new_path}' já existe."
rescue => e
  puts "Ocorreu um erro: #{e.message}"
end

Renomeando arquivos no mesmo diretório

Para renomear vários arquivos dentro do mesmo diretório, use Dir.glob para selecionar arquivos correspondentes a um padrão:


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

Dir.glob("#{directory}/#{pattern}") do |file|
  new_filename = file.gsub(/.txt$/, "_modified.txt") #Exemplo de lógica de renomeação
  begin
    File.rename(file, new_filename)
    puts "Renomeado: #{file} -> #{new_filename}"
  rescue => e
    puts "Erro renomeando #{file}: #{e.message}"
  end
end

Renomeando arquivos recursivamente em subdiretórios

Para renomear arquivos em subdiretórios, use o curinga `**` com `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 "Renomeado: #{file} -> #{new_filename}"
  rescue => e
    puts "Erro renomeando #{file}: #{e.message}"
  end
end

Renomeando arquivos em lote com lógica personalizada

Para cenários mais complexos, use um hash para mapear nomes de arquivos antigos para novos nomes de arquivos:


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 "Renomeado: #{old_path} -> #{new_path}"
  rescue => e
    puts "Erro renomeando #{old_path}: #{e.message}"
  end
end

Tratamento de erros robusto

Sempre inclua um tratamento de erros abrangente para gerenciar com elegância problemas como arquivos não encontrados ou arquivos existentes.

Deixe um comentário

O seu endereço de email não será publicado. Campos obrigatórios marcados com *