البرمجة

سكريبت باش لبحث وتصفية ملفات معينة في مجلد

في محاولة لكتابة سكريبت باش يقوم بالبحث في مجلد معين عن ملفات بامتدادات محددة، يجب أولاً علينا فهم بنية السكريبت وخطوات تنفيذه. يبدأ السكريبت بفحص جميع الملفات في المجلد المحدد، ثم يتحقق مما إذا كانت الملفات تحمل إمتدادات .txt و .csv فقط.

لتحقيق ذلك، يمكنك استخدام لوب (حلقة) لتحليل كل ملف في المجلد. يجب أيضاً تتبع الإمتدادات المسموح بها والتحقق مما إذا كان هناك إمتدادات أخرى غير المسموح بها. في حال وجود إمتدادات غير مسموح بها، يتم نقل المجلد إلى “حاوية الانتظار” ويتم كتابة سجل في ملف يحتوي على التفاصيل اللازمة.

إليك نسخة مبسطة من السكريبت:

bash
#!/bin/bash # المجلد المستهدف target_folder="/path/to/target/folder" # المجلد الذي يتم نقله في حالة وجود إمتدادات غير مسموح بها holding_bucket="/path/to/holding/bucket" # ملف السجل log_file="/path/to/log/file.log" # قائمة الإمتدادات المسموح بها allowed_extensions=("txt" "csv") # التأكد من عدم وجود مجلد فرعي if [ "$(ls -A $target_folder)" ]; then echo "Error: Subfolders are not allowed." exit 1 fi # تحقق من وجود ملفات بإمتدادات غير مسموح بها for file in "$target_folder"/*; do extension="${file##*.}" if [[ ! " ${allowed_extensions[@]} " =~ " $extension " ]]; then echo "Error: Folder contains invalid extension $extension." mv "$target_folder" "$holding_bucket" echo "$(date) - Folder $target_folder moved to $holding_bucket" >> "$log_file" exit 1 fi done # في حالة وجود فقط إمتدادات مسموح بها echo "Success: Folder $target_folder meets the criteria."

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

المزيد من المعلومات

بالطبع، سنوسع على الفكرة ونقدم مزيد من المعلومات حول السكريبت. الهدف الأساسي هو تحقيق فحص دقيق للمجلد المستهدف، مع التأكد من أن الملفات داخله تحمل إمتدادات معينة وتلبي الشروط المطلوبة.

  1. تخصيص المسارات:

    • يجب عليك تعيين المسار الكامل للمجلد المستهدف target_folder والذي سيتم البحث فيه عن الملفات.
    • كذلك، قم بتعيين المسار الكامل لمجلد الانتظار holding_bucket الذي سيتم نقل المجلد إليه في حالة وجود إمتدادات غير صالحة.
    • يُفضل أيضاً تحديد المسار الكامل لملف السجل log_file الذي سيحتوي على سجل الأحداث.
  2. قائمة الإمتدادات المسموح بها:

    • يمكنك توسيع قائمة allowed_extensions بإضافة المزيد من الإمتدادات المسموح بها، مثلاً: ("txt" "csv" "xlsx" "json").
  3. التحقق من عدم وجود مجلد فرعي:

    • تم إضافة فحص يتأكد من عدم وجود مجلد فرعي داخل المجلد المستهدف. يستخدم الأمر ls -A لفحص ما إذا كان المجلد غير فارغ.
  4. التحقق من الإمتدادات:

    • يتم استخدام لوب (حلقة) لتحليل كل ملف في المجلد وفحص الإمتدادات.
    • يُستخدم الشرط [[ ! " ${allowed_extensions[@]} " =~ " $extension " ]] للتحقق من أن الإمتداد ليس ضمن الإمتدادات المسموح بها.
  5. السجل:

    • تم إضافة كود لتسجيل الأحداث في ملف السجل log_file في حالة نقل المجلد إلى مجلد الانتظار.
  6. الإخراج:

    • تم إضافة إخراج بسيط يشير إلى نجاح أو فشل العملية ويظهر في حالة تحقيق الشروط.

تذكير: يرجى استخدام الأوامر والمسارات الصحيحة وتخصيص السكريبت حسب احتياجاتك وبيئتك.

مقالات ذات صلة

زر الذهاب إلى الأعلى

هذا المحتوى محمي من النسخ لمشاركته يرجى استعمال أزرار المشاركة السريعة أو تسخ الرابط !!