تغيير ملحقات عدة ملفات دفعة واحدة في سطر أوامر اللينكس
26 مايو 2008 | كتبه FahadOnline
اليوم جايب لكم درس بسيط في أوامر اللينكس يشرح كيفية تغيير ملحقات جميع الملفات الموجودة في مجلد معين دفعة واحدة.
أولا فلنفترض أنه يوجد لدي عدد كبير من الملفات بامتداد txt واريد تحويل هذا الإمتداد لجميع الملفات في المجلد الحالي إلى doc
يمكن عمل ذلك باستخدام تركيبة من الأمران for x in و mv
والتركيبة هي كالتالي
for x in *.txt; do mv "$x" "${x%.txt}.doc"; done
فقط ندخل هذا الأمر في سطر الأوامر لنظام التشغيل لينكس وسيتم تعديل الإمتداد لجميع الملفات ذات الإمتداد txt إلى doc
سيناريو آخر وهو السبب الذي يجعلني أستخدم هذا الأمر دائما، الملفات بامتداد tar.gz انا استخدم حاويات الـ tar بكثرة لتجميع الملفات التي أريد رفعها لموقعي وبعد ذلك أقوم بضغطها باستخدام أداة Win-Gz فتصبح جميع الملفات تنتهي بـ tar.gz مثال لإسم ملف Pictures.tar.gz
بعد ان أقوم برفع جميع الملفات إلى موقعي أقوم باستخدام هذا الأمر بواسطة سطر الأوامر البعيد كالـ SSH الذي يوفر إمكانية استخدام جميع أوامر اللينكس على الموقع أو السيرفر البعيد بواسطة إتصال الإنترنت المتوفر والسبب الذي يدعوني لتغيير هذا المتداد أنه لاحاجة له ويجعل اسم الملف طويل قليلا حيث يمكن الإستغناء عنه بامتداد tgz والذي يوفر نفس المعلومات عن نوع الملف للبرامج عند فك الضغط كالـ WinZip أو WinRar
إذن نحن نريد حذف tar.gz من نهاية كل ملف واستبدالها بـ tgz .. لعمل ذلك نستخدم التركيبة أدناه
for x in *.tar.gz; do mv "$x" "${x%.tar.gz}.tgz"; done
أتمنى أني وفقت في الشرح
تحياتي

مشكور على الموضوع انا سعيد انك تستخدم لينوكس
سؤال لو بدائي شوي لاني ما اتعامل مع سطر الاوامر و مبتدئ
وين بدي حط مسار المجلد بسطر يعني اذا عندي مجلد على home كيف احط مسار بالامر
for x in *.txt; do mv “$x” “${x%.txt}.doc”; done
تعجبني الأسئلة التي تفيد السائل والمسؤول
تصدق يا أخي لم أفكر من قبل في ذلك … فكرتك توفر الوقت الكثير
تفضل
for x in path/to/files/*.ext1; do mv "$x" "${x%.ext1}.ext2"; doneبحثت في القوقل ولكن لم اجد الإجابة فوضعت استفساري في هذا المنتدى
http://www.linuxquestions.org/questions/linux-newbie-8/how-to-change-extensions-for-many-files-in-other-directory-path-644913/
وتفضل أحد الأعضاء بإفادتي
مشكور كتير الحركة مفيدة مثل ما تفضلت
عذبناك معنا ان شاء الله نشوف المزيد عن من المقلات المفيدة عن لينوكس
[...] في موضوع سابق بشرح كيفية تغيير ملحقات عدة ملفات دفعة واحدة في سطر أوامر ال… وأستعنت بأحد المنتديات المختصة في أنظمة لينكس للإجابة [...]
يا إلهي ! لست بحاجة إلى هذه الحلقة البرمجية لتنفيذ هذا الأمر البسيط ..
بكفيك الأمر التالي:
mv *.txt *.doc
وفي ويندوز سيعمل الأمر المشابه بنفس الطريقة أيضا:
move *.txt *.doc
أو
ren *.txt *.doc
ياااارجل … إنتا فينك من زماااان
والله راح أدعيلك لو أشتغل الأمر بالطريقة اللي ذكرتها
Ebnalblad
ان شاء تكون قريت رد الأخ الكريم
تحياتي
بالمناسبة .. رددت عليك في منتدى أسئلة لينوكس بنفس جوابي هنا ; )
نعم رأيت ردك وأنا أقوم بتعديل الروابط
شفت رد لان مشتركي بتعليقات التدوينة
مشكور اخ فهد انت والاخ ابو حازم على فكرة اتذكر اني نفذت الطريقة التي ذكرتها انت بالموضوع
for x in *.tar.gz; do mv “$x” “${x%.tar.gz}.tgz”; done
رحت لمسار الملف بالامر cd
الامر اللي ذكرتوا بالتعليق ماضبط
for x in path/to/files/*.ext1; do mv “$x” “${x%.ext1}.ext2″; done
حسب ماظاهر طريقة الاخ لبو حاوم سهلة و بسيطة فقط
mv *.txt *.doc
شكرا شباب
عليك بكتاب Linux Shell Scripting Tutorial فهو سهل ومن 46 صحيفة فحسب.
أما إن أردت التوسع فخذ Shell Programming in 24 Hours أو Advanced Bash-Scripting Guide أو Advanced Bash-Scripting Guide وغيرهم الكثير ..
لكن لا أنصحك بإضاعة أكثر من يومين أو ثلاثة في ذلك.