كيفية استخدام الأمر rename على Linux

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

ما الخطأ في mv؟

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

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

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

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

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

mv oldfile.txt newfile.txt
ls * .txt

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

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

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

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

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

ls * .prog -l

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

لـ f في * .prog ؛ فعل mv - "$ f" "$ {f٪ .prog} .prg"

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

ls * .pr *

لذا ، نعم ، لقد نجحت. إنها جميعًا ملفات ".prg" الآن ، ولا توجد ملفات ".prog" في الدليل.

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

ماذا فعل هذا الأمر الطويل في الواقع؟ دعونا نكسرها.

لـ f في * .prog ؛ فعل mv - "$ f" "$ {f٪ .prog} .prg"

يبدأ الجزء الأول حلقة تقوم بمعالجة كل ملف ".prog" في الدليل ، بدوره.

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

يجب أن يكون هناك طريقة أبسط

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

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

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

sudo apt-get install rename

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

sudo dnf تثبيت الاسم الأول

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

sudo pacman -Syu perl-rename

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

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

ls * .prog

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

إعادة تسمية / .prog / .prg / '* .prog
ls * .pr *

نجح ذلك ، فهي الآن جميع ملفات ".prg" ، ولا توجد ملفات ".prog" متبقية في الدليل.

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

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

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

في الماضي الجزء هو *.progالذي يقول renameللعمل على كافة الملفات ".prog".

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

الجزء الأوسط من الأمر ، أو التعبير المركزي ، هو "تعبير عادي" للغة Perl وهو ما يمنح renameالأمر مرونته.

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

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

يوجد في الدليل الكثير من ملفات التعليمات البرمجية المصدر C. كل أسماء الملفات مسبوقة بـ "عامية _". يمكننا التحقق من هذا مع ls.

ls sl * .c

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

إعادة تسمية 's / slang_ / sl_' * .c

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

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

ls sl * .c

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

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

ls * .c
إعادة تسمية / sl _ // '* .c
ls * .c

يمكننا أن نرى من lsالأمر أن ملفات ".c" الخاصة بنا كلها مُلحقة مسبقًا بـ "sl_". دعونا نتخلص من ذلك تمامًا.

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

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

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

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

دعنا نستخدم ls النظر في الملفات التي تحتوي على السلسلة "param" في اسم ملفها. ثم سنستخدم renameلاستبدال هذه السلسلة بالسلسلة "المعلمة". سنستخدم lsمرة أخرى لمعرفة تأثير renameالأمر على تلك الملفات.

ls * param *
إعادة تسمية / param / المعلمة '* .c
ls * param *

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

و renameالقيادة تسير للبحث عن "المعلمة" في كل مكان في اسم الملف، واستبدالها ب "المعلمة" في جميع الحالات.

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

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

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

ls * param * .c
إعادة تسمية / ^ المعلمة / القيمة / '* .c
ls * param * .c
ليرة سورية *

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

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

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

تكمن قوة renameالكذب في قوة بيرل. كل قوة Perl تحت تصرفك.

البحث مع التجمعات

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

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

renameسيبحث التعبير المركزي لهذا الأمر عن سلاسل داخل أسماء الملفات التي تحتوي على تسلسل الأحرف "stri" أو "Stra" حيث يتم اتباع هذه التسلسلات مباشرة بـ "ng". بمعنى آخر ، سيبحث مصطلح البحث لدينا عن "string" و "strang". مصطلح الاستبدال هو "فرقعة".

ls str * .c
إعادة تسمية / (stri | stra) ng / bang / '* .c
ls ban * .c

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

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

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

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

و 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

أنت (Wo | Do) لا تتعلم لغة Perl في خمس دقائق

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