إتقان مطابقة الملفات: استخدام أوامر Glob
و Find
في برمجة الصدفة
عند الغوص في برمجة الصدفة وإدارة الملفات، تثار سؤال شائع: هل من الممكن إنشاء glob يطابق الملفات في الدليل الحالي وجميع المجلدات الفرعية؟ قد يكون التعامل مع مسارات الملفات بكفاءة أمراً معقداً قليلاً، خاصة إذا كنت ترغب في التأكد من أنك تلتقط ليس فقط الملفات في الدليل العامل الحالي، ولكن أيضًا تلك الموجودة أعمق ضمن هيكل مترابط من المجلدات.
في هذه المدونة، سوف نستكشف هيكل دليل افتراضي ونوضح كيفية مطابقة الملفات باستخدام أنماط glob
وأمر find
المتنوع. بنهاية المقال، ستكون أكثر راحة في التعامل مع عمليات البحث عن الملفات باستخدام هذه الأدوات.
فهم هيكل الدليل
دعونا نلقي نظرة أقرب على هيكل الدليل الذي نعمل عليه:
.
|-- README.txt
|-- firstlevel.rb
`-- lib
|-- models
| |-- foo
| | `-- fourthlevel.rb
| `-- thirdlevel.rb
`-- secondlevel.rb
في هذا الهيكل، لدينا مزيج من الملفات والمجلدات:
- الملفات:
README.txt
firstlevel.rb
secondlevel.rb
thirdlevel.rb
(داخلlib/models
)fourthlevel.rb
(داخلlib/models/foo
)
الهدف: مطابقة جميع ملفات .rb
في الدليل الحالي وجميع المجلدات الفرعية.
الحل: استخدام أمر find
بينما قد تفكر في استخدام glob
لتحديد الملفات الخاصة بك، فإن استخدام أمر find
هو الطريقة المفضلة عمومًا نظرًا لمرونته وقوته. إليك كيف يمكنك هيكلة أمرك:
find . -name '*.rb' -type f
تحليل الأمر
find
: هو الأمر الذي يبدأ البحث عبر المسارات..
: يحدد الدليل الحالي كنقطة انطلاق للبحث.-name '*.rb'
: يُخبرfind
بالبحث عن الملفات التي تتطابق مع النمط*.rb
- مما يعني أي ملف مع امتداد.rb
.-type f
: يضمن أن يتم مطابقة الملفات فقط، مستبعدًا المجلدات من النتائج.
فوائد استخدام find
- المرونة: على عكس
glob
، الذي قد يواجه صعوبة مع الهياكل المعقدة، يمكن لـfind
التنقل عبر جميع مستويات المجلدات الفرعية بسلاسة. - خيارات إضافية: يمكنك تعزيز بحثك مع معلمات أخرى مختلفة، مثل التصفية حسب وقت التعديل، الحجم، والمزيد.
- الأداء: استخدام
find
غالبًا ما يكون أكثر كفاءة، خاصة في الأشجار الدليلية الأكبر، مما يؤدي إلى أداء أسرع عند تحديد المواقع للملفات.
نهج بديل: استخدام أنماط Glob
بينما يُنصح باستخدام find
، يمكنك أيضًا استخدام نهج glob مباشر. ومع ذلك، من المهم ملاحظة أن التعامل مع الهياكل المعقدة باستخدام glob يمكن أن يصبح مرهقًا وأقل قراءة. إليك مثال بسيط حول كيفية استخدام نمط glob بسيط:
echo **/*.rb
هذا الأمر يستفيد من نمط **
، الذي يسمح بالبحث عبر جميع المجلدات بشكل متكرر في صدفة تدعم globbing الموسع (مثل bash
مع shopt -s globstar
).
قيود أنماط Glob
- التعقيد: عندما تكون الهيكل معقدًا، يمكن أن تصبح أنماط glob صعبة القراءة والصيانة.
- التوافق: ليست جميع الصدف تدعم globbing الموسع، مما قد يؤدي إلى سلوك غير متسق عبر البيئات.
الخاتمة
في الملخص، بينما من الممكن استخدام أنماط glob
لمطابقة الملفات في الدليل الحالي ومجلداته الفرعية، يُعد أمر find
أداة قوية ومرنة التي توفر حلاً أكثر قوة لاحتياجات البحث عن الملفات في برمجة الصدفة.
باستخدام الأمر:
find . -name '*.rb' -type f
سيظهر بفاعلية جميع ملفات .rb
المطابقة داخل هيكل الدليل المحدد، مما يسهل عمليات إدارة الملفات لديك.
من خلال إتقان هذه الأوامر، يمكنك تعزيز كفاءتك في التنقل وإدارة الملفات داخل بيئة صدفتك.