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?
- Tek Bir Dosyayı Yeniden Adlandırma
- Aynı Dizin içindeki Dosyaları Yeniden Adlandırma
- Alt Dizinler Üzerinde Özyinelemeli Olarak Dosyaları Yeniden Adlandırma
- Özel Mantıkla Dosyaları Toplu Olarak Yeniden Adlandırma
- Sağlam Hata İşleme
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.