كيفية استخدام أمر إعادة التسمية على لينكس

النقاط الرئيسية

  • يعد الأمر “mv” أداة متعددة الاستخدامات لنقل الملفات وإعادة تسميتها، ولكنه ليس مصممًا خصيصًا لإعادة تسمية الملفات.
  • عند إعادة تسمية ملفات متعددة، قد يكون استخدام “mv” معقدًا ويتطلب حيل Bash.
  • البديل لـ “mv” هو أمر “rename”، والذي يوفر المزيد من المرونة والقوة لمهام إعادة تسمية الملفات.



تعرف على قوة إعادة تسمية الملفات في عالم Linux وامنحنا mv – ونفسك – راحة. Rename مرن وسريع، بل وأسهل أحيانًا. إليك كيفية استخدام هذا الأمر القوي.


ما هو الخطأ في mv؟

لا يوجد شيء خاطئ في mv . الأمر يفعل وظيفة جيدة، وهو موجود في جميع توزيعات Linux، وفي macOS، وفي أنظمة تشغيل أخرى شبيهة بنظام Unix. لذا فهو متاح دائمًا. ولكن في بعض الأحيان تحتاج فقط إلى جرافة، وليس مجرفة.

ال mv إن الأمر له هدف في الحياة، وهو نقل الملفات. ومن الآثار الجانبية السعيدة أنه يمكن استخدامه لنقل ملف موجود إلى ملف جديد باسم جديد. والنتيجة النهائية هي إعادة تسمية الملف، وبالتالي نحصل على ما نريد. ولكن mv ليست أداة مخصصة لإعادة تسمية الملفات.

إعادة تسمية ملف واحد باستخدام mv على Linux

للإستخدام mv لإعادة تسمية نوع الملف mv، مسافة، اسم الملف، مسافة، والاسم الجديد الذي تريد أن يحمله الملف. ثم اضغط على Enter.


يمكنك استخدام ls للتحقق من إعادة تسمية الملف.

mv oldfile.txt newfile.txt

ls *.txt

إعادة تسمية oldfile.txt إلى newfile.txt باستخدام mv.

إعادة تسمية ملفات متعددة باستخدام mv

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

الأمور تتطور بسرعة.

لنفترض أن لدينا دليلاً يحتوي على مجموعة متنوعة من الملفات من أنواع مختلفة. بعض هذه الملفات لها امتداد “.prog”. نريد إعادة تسميتها في سطر الأوامر بحيث يكون لها امتداد “.prg”.


كيف نتجادل mv هل تريد أن تفعل ذلك من أجلنا؟ دعنا نلقي نظرة على الملفات.

ls *.prog -l

ls *.prog -l في نافذة المحطة الطرفية

إليك طريقة واحدة للقيام بذلك دون اللجوء إلى كتابة ملف نصي Bash فعلي.

for f in *.prog; do mv -- "$f" "${f%.prog}.prg"; done

بالنسبة إلى f في *.prog؛ قم بعمل mv -- "ف" "${f%.prog}.prog" في نافذة المحطة الطرفية

هل نجح ذلك؟ دعنا نتحقق من الملفات ونرى.

ls *.pr*


ls *.pr* في نافذة المحطة الطرفية

حسنًا، نعم، نجح الأمر. أصبحت جميع الملفات بامتداد “.prg” الآن، ولا توجد ملفات بامتداد “.prog” في الدليل.

ماذا حدث للتو؟

ماذا فعلت هذه الأوامر الطويلة في الواقع؟ دعونا نوضحها بالتفصيل.

for f in *.prog; do mv -- "$f" "${f%.prog}.prg"; done

يبدأ الجزء الأول حلقة ستقوم بمعالجة كل ملف “.prog” في الدليل، بالتناوب.

الجزء التالي يوضح ما ستفعله المعالجة. إنها تستخدم mv لنقل كل ملف إلى ملف جديد. سيتم تسمية الملف الجديد باسم الملف الأصلي باستثناء الجزء “.prog”. سيتم استخدام امتداد جديد “.prg” بدلاً من ذلك.

وينهي الجزء الأخير الحلقة بعد معالجة كل ملف.

استخدم rename لإعادة تسمية ملف على Linux

بالتأكيد. إنه rename يأمر.


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

في توزيعات Ubuntu وDebian المشتقة، يمكنك تثبيت rename مثله:

sudo apt-get install rename

sudo apt-get install rename في نافذة المحطة الطرفية

في التوزيعات المشتقة من Fedora وRedHat، يمكنك تثبيت prename مثل هذا. لاحظ الحرف “p” الأولي، والذي يرمز إلى Perl.

sudo dnf install prename

sudo dnf install prename في نافذة المحطة الطرفية


لتثبيته في Manjaro Linux، استخدم الأمر التالي. لاحظ أن أمر إعادة التسمية يسمى perl-rename.

sudo pacman -Syu perl-rename

sudo pacman -Syu perl-rename في نافذة المحطة الطرفية

دعونا نفعل ذلك مرة أخرى

وهذه المرة سوف نستخدم renameسنقوم بإرجاع عقارب الساعة إلى الوراء حتى يكون لدينا مجموعة من ملفات “.prog”.

ls *.prog

ls *.prog في نافذة المحطة الطرفية

الآن دعنا نستخدم الأمر التالي لإعادة تسميتهم. ثم سنتحقق من ذلك باستخدام ls هل نجح الأمر؟ تذكر أن تستبدل rename مع اسم الأمر المناسب لنظام Linux الخاص بك إذا كنت لا تستخدم Ubuntu أو Linux المشتق من Debian.


rename 's/.prog/.prg/' *.prog

ls *.pr*

تغيير امتداد الملف .prog إلى .prg، ثم البحث عن الملفات ذات الامتداد .prg.

لقد نجح الأمر، والآن أصبحت جميعها ملفات “.prg”، ولم يتبق أي ملفات “.prog” في الدليل.

ماذا حدث هذه المرة؟

دعونا نشرح هذا الجزء من السحر، في ثلاثة أجزاء.

الجزء الأول هو اسم الأمر، rename (أو prename أو perl-rename (بالنسبة للتوزيعات الأخرى).

الجزء الأخير هو *.prog، الذي يخبرنا rename للعمل على كافة ملفات “.prog”.

يحدد الجزء الأوسط العمل الذي نريد القيام به على كل اسم ملف. s يعني البديل. المصطلح الأول (.prog) هو ما rename سيتم البحث في كل اسم ملف عن المصطلح الثاني (.prg) هو ما سيتم استبداله به.


الجزء الأوسط من الأمر، أو التعبير المركزي، هو Perl ‘تعبير منتظم“وهذا ما يعطي” rename تتمتع بالمرونة.

تغيير أجزاء أخرى من اسم الملف

لقد قمنا بتغيير امتدادات أسماء الملفات حتى الآن، دعونا نقوم بتعديل الأجزاء الأخرى من أسماء الملفات.

يوجد في الدليل عدد كبير من ملفات أكواد المصدر بلغة C. جميع أسماء الملفات مسبوقة بـ “slang_”. يمكننا التحقق من ذلك باستخدام ls.

ls sl*.c

قائمة الملفات التي تبدأ بـ sl ولها ".ج" ملحق الملف.

سنستبدل جميع تكرارات “slang_” بـ “sl_”. تنسيق الأمر مألوف لنا بالفعل. كل ما نقوم به هو تغيير مصطلح البحث ومصطلح الاستبدال ونوع الملف.

rename 's/slang_/sl_/' *.c


إعادة تسمية ملفات العامية دفعة واحدة.

هذه المرة نبحث عن ملفات “.c” ونبحث عن “slang_”. كلما تم العثور على “slang_” في اسم ملف، يتم استبداله بـ “sl_”.

يمكننا التحقق من نتيجة هذا الأمر عن طريق تكرار ls الأمر من الأعلى بنفس المعلمات:

ls sl*.c

قم بتأكيد إعادة التسمية عن طريق تشغيل ls مرة أخرى.

حذف جزء من اسم الملف

يمكننا إزالة جزء من اسم الملف عن طريق استبدال مصطلح البحث بلا شيء.

ls *.c

rename 's/sl_//' *.c

ls *.c


حذف الرائدة "س_ل_" جزء من اسم الملف دون المساس بالباقي.

يمكننا أن نرى من ls الأمر بأن يتم إضافة “sl_” إلى جميع ملفات “.c” الخاصة بنا. دعنا نتخلص من ذلك تمامًا.

ال rename يتبع الأمر نفس التنسيق السابق. سنبحث عن ملفات بعلامة “.c”. مصطلح البحث هو “sl_”، ولكن لا يوجد مصطلح استبدال. وجود شرطتين عكسيتين بدون أي شيء بينهما لا يعني شيئًا، بل سلسلة فارغة.

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

الاستخدام الثاني لـ ls يؤكد الأمر أنه تمت إزالة البادئة “sl_” من كل ملف “.c”.


تقييد التغييرات على أجزاء معينة من أسماء الملفات

دعونا نستخدم ls للبحث عن الملفات التي تحتوي على السلسلة “param” في اسم الملف الخاص بها. بعد ذلك سنستخدم rename لاستبدال هذه السلسلة بالسلسلة “parameter”. سنستخدم ls مرة أخرى لرؤية التأثير rename كان الأمر على تلك الملفات.

ls *param*

rename 's/param/parameter/' *.c

ls *param*

قائمة "المعلمة" الملفات الموجودة في المحطة الطرفية.

تم العثور على أربعة ملفات تحتوي على “param” في اسم الملف الخاص بها. تحتوي ملفات param.c وparam_one.c وparam_two.c على “param” في بداية اسمها. يحتوي ملف third_param.c على “param” في نهاية اسمه، قبل الامتداد مباشرة.

ال rename سيقوم الأمر بالبحث عن “param” في كل مكان في اسم الملف، واستبداله بـ “parameter” في جميع الحالات.


الاستخدام الثاني لـ ls يوضح لنا الأمر أن هذا هو ما حدث بالضبط. سواء كان “param” في بداية أو نهاية اسم الملف، فقد تم استبداله بـ “parameter”.

يمكننا استخدام الأحرف الوصفية في لغة Perl لتحسين سلوك التعبير الأوسط. الأحرف الوصفية هي رموز تمثل مواضع أو تسلسلات من الأحرف. على سبيل المثال، ^ يعني “بداية السلسلة” $ تعني “نهاية السلسلة” و . يعني أي حرف مفرد (باستثناء حرف السطر الجديد).

سنستخدم بداية الحرف الأولي للسلسلة ( ^ ) لتقييد بحثنا على بداية أسماء الملفات.

ls *param*.c

rename 's/^parameter/value/' *.c

ls *param*.c

ls value*.c

تقييد إعادة التسمية للبحث عن "المعلمة" فقط إذا كان في بداية الاسم.


يتم سرد الملفات التي قمنا بإعادة تسميتها سابقًا، ويمكننا رؤية السلسلة “parameter” في بداية ثلاثة أسماء ملفات وفي نهاية أحد أسماء الملفات.

ملكنا rename يستخدم الأمر بداية السطر (^) حرف ميتا قبل مصطلح البحث “المعلمة”. هذا يخبرك rename لن يتم اعتبار مصطلح البحث موجودًا إلا إذا كان في بداية اسم الملف. سيتم تجاهل سلسلة البحث “parameter” إذا كانت في أي مكان آخر في اسم الملف.

التحقق مع lsيمكننا أن نرى أن اسم الملف الذي كان يحتوي على “parameter” في نهاية اسم الملف لم يتم تعديله، ولكن أسماء الملفات الثلاثة التي كانت تحتوي على “parameter” في بداية أسمائها تم استبدال سلسلة البحث الخاصة بها بالمصطلح البديل “value”.

قوة rename تكمن قوة بيرل في كل شيء قوة بيرل تحت تصرفكم.


البحث باستخدام التجميعات

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

في هذا المثال نستخدم ls للتحقق من الملفات التي لدينا والتي تبدأ بـ “str”. هناك اثنان منها، string.c وstrangle.c. يمكننا إعادة تسمية السلسلتين في وقت واحد باستخدام تقنية تسمى التجميع.

التعبير المركزي عن هذا rename سيبحث الأمر عن سلاسل داخل أسماء الملفات التي تحتوي على تسلسل الأحرف “stri” أو “stra” حيث تتبع هذه التسلسلات على الفور “ng”. بعبارة أخرى، سيبحث مصطلح البحث لدينا عن “string” و”strang”. مصطلح الاستبدال هو “bang”.

ls str*.c

rename 's/(stri|stra)ng/bang/' *.c

ls ban*.c


إعادة التسمية "خيط" و "خنق" ل "انفجار"

استخدام ls يؤكد المرة الثانية أن string.c أصبح bang.c وأن strangle.c أصبح الآن bangle.c.

استخدام الترجمات مع إعادة التسمية

ال rename يمكن للأمر تنفيذ إجراءات على أسماء الملفات تسمى الترجمات. ومن الأمثلة البسيطة على الترجمة إجبار مجموعة من أسماء الملفات على الكتابة بأحرف كبيرة.

في rename لاحظ الأمر أدناه أننا لا نستخدم s/ لبدء التعبير المركزي، نستخدم y/. هذا يخبرنا rename نحن لا نقوم بالاستبدال، بل نقوم بالترجمة.

ال a-z المصطلح هو تعبير Perl الذي يعني جميع الأحرف الصغيرة في التسلسل من a إلى z. وبالمثل، A-Z يمثل المصطلح جميع الأحرف الكبيرة في التسلسل من A إلى Z.


يمكن إعادة صياغة التعبير المركزي في هذا الأمر على النحو التالي: “إذا تم العثور على أي من الأحرف الصغيرة من a إلى z في اسم الملف، فاستبدلها بالأحرف المقابلة من تسلسل الأحرف الكبيرة من A إلى Z”.

لإجبار أسماء الملفات “.prg” على أن تكون بأحرف كبيرة، استخدم هذا الأمر:

إعادة تسمية ‘y/az/AZ/’ *.prg

ls *.PRG

قم بإعادة تسمية الملفات لتصبح كلها بأحرف كبيرة.

ال ls يُظهِر لنا الأمر أن جميع أسماء الملفات “.prg” أصبحت الآن بأحرف كبيرة. في الواقع، لكي نكون دقيقين تمامًا، لم تعد هذه الملفات “.prg”. إنها ملفات “.PRG”. Linux حساس لحالة الأحرف.

يمكننا عكس هذا الأمر الأخير عن طريق عكس موضع a-z و A-Z المصطلحات في التعبير المركزي.


إعادة تسمية ‘y/AZ/az/’ *.PRG

ls *.prg

عكس ترتيب الحجج لاستبدال الأحرف الكبيرة بالأحرف الصغيرة

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

إن تعلم لغة Perl هو أمر يستحق الوقت. ولكن البدء في استخدام إمكانيات توفير الوقت التي تقدمها rename من أجل الحصول على فوائد كبيرة في القوة والبساطة والوقت، لا تحتاج إلى أن يكون لديك الكثير من المعرفة بلغة Perl على الإطلاق.

أضف تعليق