هل من الممكن إنشاء كرة أرضية تتطابق مع الملفات الموجودة في الدليل الحالي وجميع الدلائل الفرعية؟
سؤال
لبنية الدليل هذه:
.
|-- README.txt
|-- firstlevel.rb
`-- lib
|-- models
| |-- foo
| | `-- fourthlevel.rb
| `-- thirdlevel.rb
`-- secondlevel.rb
3 directories, 5 files
سوف تتطابق الكرة الأرضية مع:
firstlevel.rb
lib/secondlevel.rb
lib/models/thirdlevel.rb
lib/models/foo/fourthlevel.rb
المحلول
أعتذر إذا فاتني الهدف الحقيقي من السؤال، ولكن إذا كنت أستخدم sh/bash/etc، فمن المحتمل أن أستخدمه يجد للقيام بهذه المهمة:
find . -name '*.rb' -type f
يمكن أن تصبح Globs سيئة بعض الشيء عند استخدامها من داخل البرنامج النصي و يجد أكثر مرونة.
نصائح أخرى
في زش، **/*.rb
يعمل
في روبي نفسها:
Dir.glob('**/*.rb') perhaps?
يبدو أنه لا يمكن القيام به من bash
إذا كنت تستخدم zsh
ثم
ls **/*.rb
سوف تنتج النتيجة الصحيحة.
وإلا يمكنك اختطاف ruby
مترجم فوري (وربما لغات أخرى)
ruby -e "puts Dir.glob('**/*.rb')"
شكرا لكريس وجايوس لإجاباتك.
لا تنتمي إلى StackOverflow