كيفية استخدام الأمر 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 على الإطلاق لجني فوائد كبيرة في القوة والبساطة والوقت.