هل تبحث عن وسيلة لتنظيم ملفاتك وإجراء بعض العمليات عليها؟ هناك العديد من الحالات في البرمجة حيث تحتاج إلى فرز بعض البيانات، مثل قائمة من الملفات. فإن فرز الملفات باستخدام أوامر Bash sort
و ls
سيساعدك في الحفاظ على التنظيم.
في هذا البرنامج التعليمي، ستتعلم أساسيات فرز الملفات ومحتوياتها.
لنقم بالترتيب!
المتطلبات
يستخدم هذا البرنامج التعليمي Ubuntu 20.04، ولكن أي توزيع Linux آخر سيعمل.
فرز الملفات بشكل أبجدي باستخدام Bash
هناك العديد من الطرق لفرز الملفات في نظام Linux، ولكن دعونا نركز على الطريقة الأكثر شيوعاً، وهي فرز الملفات أبجدياً.
قم بفتح الطرفية الخاصة بك وتشغيل الأمر ls -l
أدناه للحصول على قائمة بالملفات في دليل بترتيب تصاعدي. يقول العلم -l
لأمر ls
بطباعة الناتج المسترجع بتنسيق قائمة طويلة.

بشكل افتراضي، يقوم أمر
ls
بسرد الملفات بترتيب تصاعدي. لعكس ترتيب الفرز، قم بتمرير العلم-r
إلى أمرls -l
، مثل هذا:ls -lr
. تطبيق العلم-r
إلى أمرls -l
ينطبق على أمثلة أخرى في هذا البرنامج التعليمي.
استخدام فرز Bash لترتيب الملفات حسب الحجم
بدلاً من ترتيب الملفات ترتيباً أبجدياً، قد ترغب في ترتيب الملفات حسب حجمها. يعد ترتيب الملفات حسب الحجم مفيدًا عندما يكون هناك حاجة لرؤية إما أصغر الملفات أو أكبرها في قائمة.
لترتيب الملفات حسب الحجم، قم بتمرير العلم -S إلى الأمر ls لإخباره بترتيب قائمة الملفات حسب الحجم.
قم بتشغيل الأمر أدناه لعرض الملفات (ls) مرتبة حسب الحجم بتنسيق قائمة طويلة (ls -lS).
أدناه، يمكنك أن ترى أن الأمر قام بترتيب الملفات حسب الحجم بترتيب تنازلي (من الأكبر إلى الأصغر من حيث الحجم).
لعكس ترتيب الفرز (من الأصغر إلى الأكبر)، أضف العلم -r، مثل هذا: ls -lSr

ترتيب الملفات حسب وقت التعديل عبر ترتيب Bash Sort
في التقدم من ترتيب الملفات حسب الحجم، قد تواجه حالة استخدام حيث تحتاج إلى ترتيب الملفات حسب الوقت الذي تم فيه تعديلها. على سبيل المثال، نسيت اسم الملف الذي أنشأته، وتذكرت فقط الوقت الذي تم فيه تعديل الملف لآخر مرة.
قم بتشغيل الأمر أدناه حيث يخبر المعلم -t الأمر ls بترتيب الملفات حسب وقت التعديل.

ترتيب الملفات حسب امتداد الملف
عندما تبحث عن ملف بنوع معين من الملفات، يعد ترتيب الملفات حسب امتداد الملف الحل المثالي.
قم بتنفيذ الأمر أدناه لعرض الملفات (ls) في دليل العمل وترتيبها استنادًا إلى امتداداتها (ls -lx).
لاحظ أدناه أن الأمر قام بترتيب الملفات ذات نفس الامتداد بترتيب تصاعدي استنادًا إلى أسمائها.

فرز محتويات ملف نصي
الآن، لقد تعلمت مختلف الطرق لفرز الملفات في دليل. بتحويل انتباهك من الأمر ls
، جرب تشغيل الأمر sort
. يقوم الأمر sort
بفرز محتوى الملف اعتمادًا على العلم الذي ستضيفه. ولكن أولاً، تحتاج إلى ملف يحتوي على محتويات ستقوم بتعديلها.
قم بتشغيل الأمر أدناه لإنشاء ملف نصي يسمى ~/data/fruits.txt يحتوي على أسماء فواكه. العلم -e
يمكّن تفسير الشرطة الخلفية لكتابة كل كلمة في سطر جديد (\n
).
الآن قم بتشغيل الأمر أدناه لفرز كل كلمة في fruits.txt
.
أدناه، يمكنك رؤية محتويات الملف مرتبة بترتيب تصاعدي.

بدون أي علم، يقوم الأمر
sort
بفرز محتويات الملف بترتيب تصاعدي افتراضيًا. لعكس ترتيب الفرز، أضف العلم-r
إلى أمر الفرز، مثل هذا:sort -r fruits.txt
. تطبيق الفرز بترتيب عكسي عن طريق إضافة العلم-r
ينطبق على أمثلة أخرى في هذا البرنامج التعليمي.
فرز قائمة من الأرقام في ملف نصي
الأمر لفرز الأرقام مشابه لفرز النصوص في ملف، ولكن ستضيف العلم -n
بدلاً من ذلك. دعنا نقوم أولاً بإنشاء ملف لنوضح كيفية فرز المحتوى الرقمي للملف.
قم بتشغيل الأمر أدناه لإنشاء ملف يسمى ~/data/scores.txt يحتوي على أرقام عشوائية، كل منها في سطر جديد.
الآن قم بتشغيل الأمر أدناه لفرز الأرقام (-n
) في ملف ~/data/scores.txt.
يمكنك رؤية أدناه الأرقام المدرجة في الأسطر تبدأ من الأصغر إلى الأكبر.

فرز قائمة من أرقام الإصدارات في ملف نصي
ربما لديك قائمة من أرقام الإصدارات في ملف نصي تريد فرزه. إذا كان الأمر كذلك، فإضافة الخيار --version-sort
سيقوم بالعملية.
لتوضيح كيف يعمل الخيار --version-sort
، قم أولاً بإنشاء ملف نصي.
قم بتشغيل الأمر أدناه لإنشاء ملف نصي بالاسم ~/data/versions.txt والذي يحتوي على أرقام إصدار عشوائية مدرجة، كل رقم في سطر جديد (\n
).
الآن قم بتشغيل الأمر أدناه لـ فرز
أرقام الإصدارات (--version-sort
) في ملف versions.txt. يخبر خيار --field-separator
الأمر sort
بأن الأرقام في كل إصدار مفصولة بنقطة (.
). يمكنك تغيير فاصل الحقل إلى أي حرف يفصل الأرقام في الإصدارات المدرجة في ملف النص الخاص بك.

ترتيب باش للعثور على الملفات وترتيبها عبر امتداد الملف
كنت تقوم بتشغيل أوامر فردية (إما ls
أو sort
) في الأمثلة السابقة. ولكن في البرمجة، قد تحتاج في كثير من الأحيان إلى استخدام أمرين أو أكثر معًا. كيف؟ عن طريق التوصيل لأمر واحد إلى آخر.
قم بتشغيل الأمر أدناه للعثور على جميع ملفات التخطيط (-iname "*.md"
) في دليل العمل (.
)، وترتيبها ترتيبًا أبجديًا تنازليًا (sort -r
). حاول العثور وترتيب ملفات أخرى عن طريق تغيير "*.md"
إلى امتداد ملف آخر.

إذا كنت تفضل حفظ الناتج المرتب إلى ملف نصي بدلاً من الإخراج القياسي على وحدة التحكم، أضف الخيار
--output
، مثل هذا:find . -iname "*.md" | sort -r --output=sorted.txt
. يخبر الخيار--output
أمرsort
بإنشاء ملف إخراج لقائمة الملفات المرتبة.
الختام
كانت دافع هذا المقال هو تعليمك حول طرق مختلفة للفرز باستخدام أوامر Bash على جهاز Linux. لقد تعلمت الآن كيفية فرز قائمة الملفات وفرز محتوى الملف. بالإضافة إلى ذلك، يجب أن تعرف أيضًا كيفية استخدام أنابيب الأوامر المختلفة للفرز الأكثر تعقيدًا للملفات.
مع هذا المعرف الجديد كحجر الزاوية، لماذا لا تقوم بإنشاء سكربتات لتلقائي قوائم الملفات وفرز محتوى الملف؟