اذهب إلى المحتوى
  • 0

كيف أحصل على قائمة المجلدات في مجلد معين في روبي؟

MaxReve

السؤال

Recommended Posts

  • 0

هنالك عدّة طرق للحصول على قائمة المجلدات في مجلد معين في لغة روبي، فإذا أردت حل سريع وقصير وفي سطر واحد فيمكنك استخدام هذه الطريقة التي استخدمنا فيها عدة توابع مثل Dir.entries وfile.directory? وغيرها:

 Dir.entries('/your_dir').select {|entry| File.directory? File.join('/your_dir',entry) and !(entry =='.' || entry == '..') }

كما يمكنك استخدام هذه الطريقة السهلة والبسيطة والتي استخدمنا فيها تابع glob، وتدعم هذه الطريقة جميع المجلدات حتى المخفية منها كما في المثال التالي:

Dir.chdir('/destination_directory')
Dir.glob('*').select {|f| File.directory? f}

ملاحظة: الملفات المخفية هي التي تبدأ بنقطة (.)

رابط هذا التعليق
شارك على الشبكات الإجتماعية

  • 0

اعتقد أن Pathname أكثر ملائمة لأسماء الملفات من السلاسل العادية strings. الكود التالي يُعطيك مصفوفة من جميع المجلدات ضمن المجلد المحدد ككائنات Pathname.

require "pathname"
Pathname.new(directory_name).children.select { |c| c.directory? }

سبب آخر لتفضيل Pathname وهو أنه يحذف تلقائيًّا ملفات . و .. وملفات الملكية مثل DS_Store.

عمومًا، إذا كنت تريد أن تكون سلاسل:

Pathname.new(directory_name).children.select { |c| c.directory? }.collect { |p| p.to_s }

إذا كان اسم المجلد مسار مطلق، فإن هذه السلاسل ستكون مطلقة أيضًا.
 

رابط هذا التعليق
شارك على الشبكات الإجتماعية

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...