شرح الأمر mv في لينكس مع الأمثلة
شرح كيفية نقل الملفات والمجلدات وإعادة تسميتهم باستخدام سطر الأوامر على اللينكس مع الأمثلة
هذا المقال جزء من سلسلة أساسيات أوامر لينكس
يُستخدم الأمر mv لنقل الملفات والمجلدات
صيغة الأمر
1
$ mv [options] source dest
خيارات الأمر mv
الخيار | الوصف |
---|---|
mv -f | إجبار عملية النقل بالكتابة فوق الملف الهدف بدون سؤال |
mv -i | نقل تفاعلي بحيث يعرض سؤال للكتابة فوق الملف الموجود |
mv -u | تحديث - النقل فقط في حال كان الملف المصدر أحدث من الملف الهدف |
أمثلة على الأمر mv
نقل الملفات main.c و def.h إلى المسار /home/usr/rapid/
1
$ mv main.c def.h /home/usr/rapid/
نقل جميع الملفات ذات اللاحقة c. من المجلد الحالي إلى المجلد الفرعي bak:
1
$ mv *.c bak
نقل جميع الملفات من المجلد الفرعي bak للمجلد الحالي
1
$ mv bak/* .
عند النقل من اسم لاسم فينتج لدينا عملية إعادة التسمية. المثال التالي هو إعادة تسمية الملف main.c إلى الاسم main.bak
1
$ mv main.c main.bak
إعادة تسمية المجلد bak إلى bak2
1
$ mv bak bak2
مثال على التحديث - انقل في حال كان الملف main.c في المجلد الحالي أحدث من الذي في المجلد الفرعي bak
1
$ mv -u main.c bak
تمرين
يتطلب إعادة تسمية عدة ملفات في مجلد بحيث يتم حذف أحرف معينة من الاسم، هذه الأحرف هي “min-“ أي مثال كل صورة تكون على الاسم التالي “image-min.jpg” ويتطلب تغيير الاسم إلى “image.jpg” ولكن تغيير أسماء كل الصور في المجلد بالشكل المطلوب وبأمر/سكريبت واحد.
الحل
إنّ موجّه الأوامر في لينكس يقبل السكريبت أي الكود، فيمكن كتابة كود بسيطة وتنفيذه مباشرة في التيرمينال، هذا الكود سيحوي الأمر mv كما شرحنا لإعادة تسمية الملفات. الكود هو:
1
2
3
4
for file in *
do
mv -i "${file}" "${file/-min/}"
done
في السطر الأول نبحث عن كل الملفات في المجلد بلا استثناء لذلك وضعنا النجمة *
ويمكن تغيير ذلك، مثلا للبحث عن كل الملفات التي يبدأ اسمها بالحرف a نكتب “*a” وهكذا..
ثم نفذنا الأمر mv لكل من هذه الملفات حيث نطبق على المتغير “{file}$” وهو الملف العبارة
1
"${file/-min/}"
وتعني استبدل التالي “min-“ بولا شيئ! لو أردنا مثلا استبداله بـ “max-“ نكتب تصبح العبارة الأخيرة
1
"${file/-min/-max}"
ﻷي استفسار لا تتردد بمراسلتي
المراجع:
- https://www.rapidtables.com/code/linux/mv.html
- https://unix.stackexchange.com/questions/102647/how-to-rename-multiple-files-in-single-command-or-script-in-unix
التالي: الأمر rm