شروحات الكمبيوتر والإنترنت والموبايل

أداة Bash لإعادة تسمية الملفات باستخدام قائمة مع التعامل مع الفراغات

في عصر التكنولوجيا الحديثة، يلجأ الكثير من المستخدمين إلى استخدام أوامر السطر (command line) وكتابة سكربتات الباش (Bash script) لأداء مهام متعددة بشكل أسرع وأكثر كفاءة. واحدة من المهام الأكثر شيوعًا هي إعادة تسمية الملفات بناءً على قائمة محددة في ملف نصي. في هذا المقال، سنناقش كيفية التعامل مع المسافات في أسماء الملفات أثناء تنفيذ هذه العملية.

فهم المشكلة: اقتطاع الأسماء ذات المسافات

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

فضل استخدام فواصل البيانات

عند استخدام سكربتات الباش، يمكننا تعيين فاصل حقل الإدخال (IFS) لفصل أسماء الملفات القديمة والجديدة. على سبيل المثال، إذا كانت أسماؤها مفصولة بفاصلة منقوطة ؛، يُمكننا استخدام الأوامر التالية:

while IFS=';' read -r old new; do mv "$old" "$new"; done < filenames.csv

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

إزالة المسافات الزائدة باستخدام sed

لحل هذه المشكلة، يمكننا استخدام أداة sed لإزالة المسافات الزائدة المحيطة بفواصل البيانات. الأمر يمكن أن يكون كالتالي:

sed 's/ *; */;/g' filenames.csv

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

تجنب الأخطاء مع أسماء الملفات الخاصة

في أثناء تنفيذ السكربت، هناك أيضًا ضرورة للتأكد من عدم وجود أسماء ملفات تبدأ بعلامة ناقص -. وذلك لأن نظام التشغيل قد يفسرها كخيارات لأوامر معينة. يمكن حماية السكربت من هذا النوع من الأخطاء باستخدام -- قبل اسم الملف. على سبيل المثال:

mv -- "$old" "$new"

بهذه الطريقة، تضمن أن يقوم النظام بتحليل الأسماء كملفات عادية وليس كخيارات.

التنفيذ النهائي

بعد إعداد وتنظيف قائمة الملفات، يمكن تنفيذ العملية بشكل نهائي. سيكون الشكل النهائي للسكربت كما يلي:

sed 's/ *; */;/g' filenames.csv | while IFS=';' read -r old new; do
    echo mv -- "$old" "$new"
done

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

اختبار السكربت قبل التشغيل

من المستحسن دائماً اختبار السكربت قبل تنفيذ الأوامر الحقيقية. يمكن لذلك أن يتم عن طريق استخدام الأمر echo لطباعة الأوامر قبل تنفيذها. بعد التأكد من صحة الأسماء التي ستم إعادة تسميتها، يمكن إزالة الأمر echo وتشغيل السكربت.

الخاتمة

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

فهد السلال

خبير تقني متخصص في شروحات الكمبيوتر والإنترنت والموبايل، يتمتع بخبرة واسعة في تقديم حلول تقنية مبتكرة ومبسطة. يهدف فهد إلى مساعدة المستخدمين على تحسين تجربتهم التقنية من خلال مقالات وأدلة عملية واضحة وسهلة الفهم.
زر الذهاب إلى الأعلى
Don`t copy text!