الحصول على الدلائل المباشرة في روبي
سؤال
وأنا أحاول كتابة السيناريو روبي بسيطة من شأنها أن نسخ الملف إلى الدلائل المباشرة للدليل. كيف أحصل سوى الدلائل المباشرة؟
المحلول
وDir.glob("**/")
سيعود مجموعة من كافة مسارات تحت الدليل الحالي. من هناك يمكنك تصفية القائمة ونسخ ملف مع File.copy(from, to)
نصائح أخرى
وعلى افتراض أردت فقط <م> فورية م> الدلائل، يمكنك استخدام Dir['*/']
(الذي يجمع بين مايكل Sepcot وإجابات glenra ل).
إذا كنت تعني للعثور على جميع <م> فوري م> الدلائل (فقط مستوى واحد دون مكان وجودك)، حاول هذا:
Dir.chdir("/some/path/you/want/to/check/below")
subdir_list=Dir["*"].reject{|o| not File.directory?(o)}
وهذا هو: تغيير الدليل في مكان ما، بناء على مجموعة من الملفات التي عثر عليها هناك، ترفض تلك العناصر مجموعة التي ليست أدلة، والعودة arrray أعدمت الناتجة
. ولعل أفضل طريقة للتعامل مع الملفات في روبي هو <وأ href = "https://ruby-doc.org/stdlib-2.3.0/libdoc/pathname/rdoc/Pathname.html" يختلط = "نوفولو noreferrer "> Pathname
. فهو يجمع بين أساليب الفئة من عدد قليل من الوحدات القائمة على ملف واحد في الدرجة OOP لطيفة للاستخدام. لذلك أنت لا تحتاج إلى تمرير قيمة في طريقة مثل كنت قد لمع Dir
أو File
، يمكنك الاتصال فقط على طريقة الكائن نفسه.
إليك كيفية طباعة الدلائل المباشرة:
require 'pathname'
puts Pathname('some/directory').children.select(&:directory?)