Ruby Programming

Ruby’de Dosya Adı Değiştirme Ustası

Spread the love

Dosya manipülasyonunda uzmanlaşmak, her geliştirici için çok önemlidir ve Ruby, dosyaları verimli bir şekilde yeniden adlandırmak için zarif çözümler sunar. Bu kılavuz, tek dosya yeniden adlandırmalarından dizinler arası karmaşık toplu işlemlere kadar çeşitli teknikleri ele almaktadır.

İçerik Tablosu

Neden Dosyaları Programatik Olarak Yeniden Adlandırıyoruz?

Çok sayıda dosyayla uğraşırken manuel dosya yeniden adlandırma pratik olmaktan çıkar. Otomasyon birkaç avantaj sunar:

  • Verimlilik: Yüzlerce veya binlerce dosyayı hızlı ve doğru bir şekilde işleyin.
  • Standardizasyon: Gelişmiş organizasyon için tutarlı adlandırma kurallarını uygulayın.
  • Sürüm Kontrolü: Dosya yinelemelerini takip etmek için zaman damgaları veya sürüm numaraları ekleyin.
  • İş Akışı Entegrasyonu: Dosya yeniden adlandırmayı daha büyük veri işleme hatlarına sorunsuz bir şekilde entegre edin.
  • Veri Temizliği: Yazım hatalarını düzeltin, istenmeyen karakterleri kaldırın ve aranabilirliği artırın.

Tek Bir Dosyayı Yeniden Adlandırma

En basit senaryo, tek bir dosyayı yeniden adlandırmayı içerir. Ruby’nin File.rename yöntemi bunu doğrudan ele alır:


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

begin
  File.rename(old_path, new_path)
  puts "Dosya başarıyla yeniden adlandırıldı!"
rescue Errno::ENOENT
  puts "Hata: '#{old_path}' dosyası bulunamadı."
rescue Errno::EEXIST
  puts "Hata: '#{new_path}' dosyası zaten mevcut."
rescue => e
  puts "Bir hata oluştu: #{e.message}"
end

Aynı Dizin içindeki Dosyaları Yeniden Adlandırma

Aynı dizin içinde birden çok dosyayı yeniden adlandırmak için, bir kalıpla eşleşen dosyaları seçmek üzere Dir.glob kullanın:


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

Dir.glob("#{directory}/#{pattern}") do |file|
  new_filename = file.gsub(/.txt$/, "_modified.txt") #Örnek yeniden adlandırma mantığı
  begin
    File.rename(file, new_filename)
    puts "Yeniden adlandırıldı: #{file} -> #{new_filename}"
  rescue => e
    puts "#{file} dosyasını yeniden adlandırmada hata: #{e.message}"
  end
end

Alt Dizinler Üzerinde Özyinelemeli Olarak Dosyaları Yeniden Adlandırma

Alt dizinlerdeki dosyaları yeniden adlandırmak için, `Dir.glob` ile `**` joker karakterini kullanın:


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 "Yeniden adlandırıldı: #{file} -> #{new_filename}"
  rescue => e
    puts "#{file} dosyasını yeniden adlandırmada hata: #{e.message}"
  end
end

Özel Mantıkla Dosyaları Toplu Olarak Yeniden Adlandırma

Daha karmaşık senaryolar için, eski dosya adlarını yeni dosya adlarına eşlemek üzere bir hash kullanın:


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 "Yeniden adlandırıldı: #{old_path} -> #{new_path}"
  rescue => e
    puts "#{old_path} dosyasını yeniden adlandırmada hata: #{e.message}"
  end
end

Sağlam Hata İşleme

Dosyaların bulunamaması veya mevcut dosyalar gibi sorunları düzgün bir şekilde yönetmek için her zaman kapsamlı hata işleme ekleyin.

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir