وداعاً للفوضى: سكريبت Bash ينظم مجلد التنزيلات تلقائياً
تُعد فوضى مجلد التنزيلات مشكلة شائعة يعاني منها الكثيرون، حيث تتراكم الملفات المتنوعة بمستويات مختلفة من الأهمية. لحسن الحظ، يمكن لسكريبت [[Bash]] بسيط أن يحول هذا المجلد الفوضوي إلى مساحة منظمة تلقائياً، ويوفر عليك عناء الفرز اليدوي المستمر.
أساسيات سكريبت Bash: البدء في التنظيم
للمبتدئين في كتابة سكريبتات Bash، سنبدأ بالخطوط الأساسية التي تشكل عماد السكريبت:
#!/bin/bash
TARGET_DIR="$HOME/Downloads/save"
cd "$HOME/Downloads" || exit
السطر الأول #!/bin/bash يحدد أننا نستخدم صدفة Bash، مما يضمن عمل الأوامر بشكل صحيح. أما السطر التالي، فيقوم بإنشاء متغير بيئة باسم TARGET_DIR. هذا المتغير يُشير إلى المسار الذي سيتم فيه حفظ الملفات لمراجعتها يدوياً لاحقاً، وهو مجلد فرعي باسم save داخل مجلد التنزيلات. يتيح لك هذا المتغير تغيير مسار الحفظ بسهولة في المستقبل.
أخيراً، يقوم الأمر cd "$HOME/Downloads" بنقل السكريبت إلى مجلد التنزيلات. ويتم إلحاق هذا الأمر بـ || exit لضمان خروج السكريبت إذا لم يتم العثور على مجلد التنزيلات لسبب ما، مما يمنع حدوث أخطاء غير متوقعة.
إنشاء مجلدات فرعية للمراجعة والترتيب
بعد إعداد البيئة الأساسية، ننتقل إلى الخطوة التالية وهي إنشاء المجلدات التي ستُستخدم لتصنيف الملفات:
mkdir -p "$TARGET_DIR"/{docs,pics,videos,music,archives}
يُنشئ هذا الأمر سلسلة من المجلدات الفرعية داخل مجلد save (الذي حددناه كـ TARGET_DIR). تشمل هذه المجلدات: docs للمستندات، pics للصور، videos للفيديوهات، music للموسيقى، وarchives للملفات المضغوطة. تضمن علامة -p عدم حدوث أي أخطاء إذا كانت هذه المجلدات موجودة مسبقاً.
بعد إنشاء المجلدات، حان وقت نقل الملفات إليها. إليك مثال على حلقة `for` التي تنقل المستندات:
for file in *.pdf *.docx *.xlsx *.csv *.html *.ics; do [ ! -f "$file" ] || mv --interactive "$file" "$TARGET_DIR"/docs
done
تتعرف حلقة for على كل ملف ينتهي بامتدادات المستندات الشائعة، ثم تنقل كل ملف إلى مجلد docs. تمت إضافة --interactive إلى أمر mv لطلب التأكيد في حال وجود ملف بنفس الاسم في المجلد الهدف، مما يمنع الكتابة فوق الملفات عن طريق الخطأ. كما أن إضافة [ ! -f "$file" ] || تضمن أن الأمر mv لن يشتكي إذا لم يجد ملفات مطابقة للامتدادات المحددة.
يمكنك تكرار هذه الحلقات مع تغيير امتدادات الملفات والمجلدات المستهدفة لتغطية جميع الفئات الأخرى مثل الصور والفيديوهات والموسيقى والأرشيفات.
حذف الملفات غير المرغوب فيها تلقائياً
توجد أنواع معينة من الملفات التي لا ترغب في الاحتفاظ بها ولا تحتاج إلى مراجعتها، مثل صور الأقراص (ISOs) التي يتم تنزيلها لأغراض الاختبار. لحذف هذه الملفات تلقائياً، يمكنك استخدام الأمر rm.
يمكنك كتابة حلقة for مع rm بطريقة مشابهة لأمر mv، مع تحديد امتدادات الملفات الشائعة التي ترغب في حذفها:
for file in *.iso *.img *.img.gz *.ova; do rm -f "$file"
done
تضمن علامة -f عدم إظهار rm لرسائل خطأ إذا لم يتم العثور على أي ملفات مطابقة للمعايير. يمكنك إنشاء حلقات منفصلة لحذف ملفات التحقق (checksums) أو برامج التثبيت غير المرغوب فيها مثل AppImages وملفات DEB.
السكريبت النهائي: تنظيم شامل لمجلد التنزيلات
لقد جمعنا الأجزاء السابقة لإنشاء سكريبت كامل يمكنك تشغيله. لسلامتك، تم التعليق على أجزاء حذف الملفات (بوضع علامة #). إذا كنت متأكداً من رغبتك في حذف هذه الأنواع من الملفات، فستحتاج إلى إزالة علامة التعليق هذه يدوياً:
#!/bin/bash
#Establish the location of the saved files for review
TARGET_DIR="$HOME/Downloads/save"
# Ensure we are in the right place
cd "$HOME/Downloads" || exit
# Create directories
mkdir -p "$TARGET_DIR"/{docs,pics,videos,music,archives}
echo "Cleaning up Downloads folder..."
#Move documents, photos, videos, music, and archives to their respective subdirectories
for file in *.pdf *.docx *.xlsx *.csv *.html *.ics; do [ ! -f "$file" ] || mv --interactive "$file" "$TARGET_DIR"/docs
done
for file in *.jpg *.jpeg *.png *.gif *.webp *.svg; do [ ! -f "$file" ] || mv --interactive "$file" "$TARGET_DIR"/pics
done
for file in *.mp4 *.mkv *.mov; do [ ! -f "$file" ] || mv --interactive "$file" "$TARGET_DIR"/videos
done
for file in *.mp3 *.flac; do [ ! -f "$file" ] || mv --interactive "$file" "$TARGET_DIR"/music
done
for file in *.zip *.tar.* *.7z; do [ ! -f "$file" ] || mv "$file" "$TARGET_DIR"/archives
done
#Delete unwanted image files, checksums, and applications
#for file in *.iso *.img *.img.gz *.ova; do
# rm -f "$file"
#done
#for file in *.CHECKSUM *.md5 *.sha256 *.sha256sum; do
# rm -f "$file"
#done
#for file in *.AppImage *.bin *.deb; do
# rm -f "$file"
#done
echo "Downloads folder cleaned!"
للتشغيل، قم بنسخ هذا النص ولصقه في محرر نصوص، ثم احفظه بامتداد .sh، مثل clean-downloads.sh. بعد ذلك، يمكنك تشغيله باستخدام الأمر التالي في الطرفية:
bash clean-downloads.sh
على الرغم من وجود طرق أكثر كفاءة لأداء هذه المهام، إلا أن هذا السكريبت مصمم ليكون سهل الفهم والتخصيص للمستخدمين المبتدئين، بفضل بنيته المعيارية والمتغيرات الواضحة.
لا تدع فوضى التنزيلات تعيق إنتاجيتك بعد الآن! باستخدام هذا السكريبت البسيط، يمكنك الاستمتاع بمجلد تنزيلات منظم دائماً.
الأسئلة الشائعة
يهدف السكريبت إلى أتمتة تنظيم مجلد التنزيلات الفوضوي على أنظمة لينكس، عبر نقل الملفات إلى مجلدات فرعية مخصصة وحذف الملفات غير المرغوب فيها تلقائياً.
يستخدم السكريبت الأمر `mkdir -p` لإنشاء مجلدات مثل `docs` و`pics` و`videos` داخل مجلد `save` المخصص للمراجعة.
نعم، يمكن للمستخدمين تعديل حلقات `for` في السكريبت لإضافة أو إزالة امتدادات الملفات التي يرغبون في تنظيمها أو حذفها.
تعني هذه العبارة أن السكريبت سيُنهي عمله إذا فشل الأمر السابق لها، مثل عدم العثور على مجلد التنزيلات.
تم تعطيل أجزاء حذف الملفات في السكريبت النهائي بشكل افتراضي (معلقة). يجب على المستخدمين إزالة علامة التعليق (`#`) يدوياً بعد التأكد التام من رغبتهم في حذف تلك الأنواع من الملفات.
التعليقات 0
سجل دخولك لإضافة تعليق
لا توجد تعليقات بعد. كن أول من يعلق!