Ruby Programming

إتقان إعادة تسمية الملفات في روبي

Spread the love

إتقان معالجة الملفات أمر بالغ الأهمية لأي مطور، ويوفر روبي حلولاً أنيقة لإعادة تسمية الملفات بكفاءة. يستكشف هذا الدليل تقنيات متنوعة، بدءًا من إعادة تسمية ملف واحد إلى عمليات دفعة معقدة عبر الدلائل.

محتويات

لماذا إعادة تسمية الملفات برمجياً؟

تصبح إعادة تسمية الملفات يدوياً غير عملية عند التعامل مع العديد من الملفات. تقدم الأتمتة العديد من المزايا:

  • الكفاءة: معالجة مئات أو آلاف الملفات بسرعة ودقة.
  • التوحيد: فرض اتفاقيات تسمية متسقة لتحسين التنظيم.
  • مراقبة الإصدارات: إضافة طوابع زمنية أو أرقام إصدارات لتتبع تكرارات الملفات.
  • تكامل سير العمل: دمج إعادة تسمية الملفات بسلاسة في خطوط أنابيب معالجة البيانات الأكبر.
  • تنظيف البيانات: تصحيح الأخطاء المطبعية، وإزالة الأحرف غير المرغوب فيها، وتحسين إمكانية البحث.

إعادة تسمية ملف واحد

تتضمن أبسط سيناريوهات إعادة تسمية ملف واحد. تقوم طريقة File.rename في روبي بذلك مباشرةً:


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

begin
  File.rename(old_path, new_path)
  puts "تمت إعادة تسمية الملف بنجاح!"
rescue Errno::ENOENT
  puts "خطأ: لم يتم العثور على الملف '#{old_path}'."
rescue Errno::EEXIST
  puts "خطأ: الملف '#{new_path}' موجود بالفعل."
rescue => e
  puts "حدث خطأ: #{e.message}"
end

إعادة تسمية الملفات في نفس الدليل

لإعادة تسمية ملفات متعددة داخل نفس الدليل، استخدم 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 "تمت إعادة التسمية: #{file} -> #{new_filename}"
  rescue => e
    puts "خطأ في إعادة تسمية #{file}: #{e.message}"
  end
end

إعادة تسمية الملفات بشكل متكرر عبر الأدلة الفرعية

لإعادة تسمية الملفات عبر الأدلة الفرعية، استخدم المُعرف النجمي `**` مع 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 "تمت إعادة التسمية: #{file} -> #{new_filename}"
  rescue => e
    puts "خطأ في إعادة تسمية #{file}: #{e.message}"
  end
end

إعادة تسمية الملفات دفعة واحدة باستخدام منطق مخصص

في الحالات الأكثر تعقيدًا، استخدم قاموسًا لربط أسماء الملفات القديمة بأسماء الملفات الجديدة:


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 "تمت إعادة التسمية: #{old_path} -> #{new_path}"
  rescue => e
    puts "خطأ في إعادة تسمية #{old_path}: #{e.message}"
  end
end

معالجة الأخطاء المتينة

قم دائمًا بتضمين معالجة شاملة للأخطاء لإدارة المشكلات مثل عدم وجود الملفات أو وجود ملفات موجودة بشكل مناسب.

اترك تعليقاً

لن يتم نشر عنوان بريدك الإلكتروني. الحقول الإلزامية مشار إليها بـ *