إعـــــــلان

تقليص
لا يوجد إعلان حتى الآن.

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

تقليص
X
تقليص

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

    لينكس على السّريع : إعادة تسمية الملفات باستخدام mv


    تذكير بالموضوع السابق :استعراض وقتل العمليات الأكثر استهلاكا
    يتوفر لينكس على أداتين قويتين لتغيير أسماء الملفات، سنتحدث عن إحداها في هذا الموضوع وهي الأمر mv، والأخرى هي الأمر rename سنتناولها في الموضوع القادم إن شاء الله. إذن سنتحدث في هذا الموضوع عن إعادة تسمية مجموعة من الملفات دفعة واحدة باستخدام الأمر mv وبمساعدة حلقات التكرارfor loops
    بيد أنّنا سنبدأ أولا بشرح مبسط عن استخدام الأمر mv وكذلك حلقات التكرار، لننتقل بعد ذلك للشرح الأساسي .

    الأمر mv



    الأمر mv يُستعمل لنقل أو إعادة تسمية الملفات
    حينما نستخدمه بالشكل التالي – باعتبار أنه لايوجد أي ملف أو مجلد يحمل الإسم file2 في المسار الذي تتم فيه العملية – :
    كود:
    mv file1 file2
    فهو يقوم بإعادة تسمية الملف file1 إلى file2
    وإذا استخدمناه بهذه الطريقة :
    كود:
    mv file ... directory
    فهو يقوم بنقل ملف أو أكثر للمجلد directory

    بعض خيارات الأمر :
    -i : طلب موافقة المستخدم قبل استبدال ملف موجود مسبقا، في حالة عدم استخدام هذا الخيار وقمت مثلا بتسمية ملف بنفس اسم ملف موجود مسبقا سيتم استبدال هذا الأخير بدون إذن منك
    -v : تفعيل وضع verbose ليتم إظهار ما يقوم به الأمر .

    حلقة التكرارFor



    حلقات التكرار هي جزء لايتجزأ في أية لغة برمجة وكذلك الأمر بالنسبة لshell scripting فهي تسهل علينا العديد من الأمور لتنفيذ عدة مهام في أمر واحد ؛ الشيء الذي سنحتاجه حتى لو كنا مجرد مستخدمين عاديين للنظام يعني ليس بالضرورة لكتابة السكربتات والأعمال البرمجية.
    طريقة استخدام حلقة تكرار من نوع for :
    كود:
    for variable in words do commands done
    words هي قائمة بالعناصر التي سيأخذها المتغير variable بشكل تسلسلي أثناء تكرار الحلقة‬
    commands هي قائمة بالأوامر التي ستُنفذ أثناء تكرار الحلقة
    أو يمكن وضع كل شيء في سطر واحد بالشكل التالي :
    كود:
    for variable in words ; do commands ; done
    أمثلة لاستخدامها :

    مثال 1
    كود:
    for variable in 'variable1' 'variable2' 'variable3' do echo $variable done
    الناتج :
    كود:
    variable1 variable2 variable3

    مثال 2
    كود:
    for file in `ls` do echo $file done
    الناتج على حسب الملفات الموجودة في المسار الحالي :
    كود:
    Apps Bureau Documents Images Modèles mots.odt Musique nfs Public Téléchargements Vidéos ydownloader

    مثال 3

    كود:
    for i in {A..D}; do echo $i; done
    الناتج :
    كود:
    A B C D
    الشرح الأساسي



    أولا فلننشئ مجلدا نسميه مثلا test لنجري فيه تجاربنا حتى لايؤدي ذلك إلى مس ملفاتنا الشخصية ، وننشئ داخله عشرة ملفات.
    كود:
    mkdir test; cd test ; touch {1..10}.txt
    بتطبيق الأمر ls سنجد :
    كود:
    10.txt 1.txt 2.txt 3.txt 4.txt 5.txt 6.txt 7.txt 8.txt 9.txt
    الآن سنجري عملية إعادة تسمية بسيطة بتحديد كل الملفات ذات الامتداد .txt وإضافة -old في آخرها :
    كود:
    for file in *.txt do mv $file $file-old done
    ستصبح أسماء الملفات كالتالي :
    كود:
    10.txt-old 2.txt-old 4.txt-old 6.txt-old 8.txt-old 1.txt-old 3.txt-old 5.txt-old 7.txt-old 9.txt-old
    الآن نريد مثلا حذف -old من أسماء هذه الملفات، سنقوم باستخدام ما يسمى بالتوسعات الخاصة بعمليات البحث والاستبدال شبيهة قليلا بما يقوم به الأمر sed :
    كود:
    for i in `ls`;do mv $i ${i/-old/} ; done
    تجري هذه التوسعة عملية بحث واستبدال لمحتويات المتغير $i إذا وجد النص -old في إسم المتغير يتم استبداله بلا شيء، طبعا كان في مقدورنا استبداله بكلمة أخرى مثلا -new :
    كود:
    for i in `ls`;do mv $i ${i/-old/-new} ; done
    كما تلاحظون في قائمة العناصر التي يأخذها المتغير i لم نضع *.txt لأن امتدادها لم يعد كذلك لهذا استخدمنا `ls`
    الآن عادت أسماء الملفات إلى بدايتها
    كود:
    10.txt 1.txt 2.txt 3.txt 4.txt 5.txt 6.txt 7.txt 8.txt 9.txt
    الآن نود مثلا تغيير امتداداتها من .txt إلى .png ، سيرد علي أحدهم قائلا باستهتار :
    هههههههههههه بسيطة : mv *.txt *.png
    سأجيبه :
    هههههههههههههههه أنت مخطئ
    نعم بالفعل هذا الأمر لايقوم بالمطلوب ولمزيد من المعلومات إليكم هذا الموضوع
    لتغيير امتداداتها سنقوم باستخدام الطريقة التالية :
    كود:
     for i in *.txt; do mv $i ${i/%.txt/.png} ; done

    المعامل % يعني تواجد النص المطلوب في نهاية محتوى المتغير لتتم عملية الاستبدال في نهاية الاسم
    الآن نود مثلا إضافة بعض حقوقنا على هذه الملفات لنضع اسمنا في بداية اسم كل ملف
    كود:
    for i in *.png ; do mv $i "$USER-$i" ; done
    كما ترون فقد استخدمنا متغير البيئة $USER الذي يُعوض باسم المستخدم الخاص بنا
    نتيجة الأمر ls بعد تنفيذ الأمر السابق بالنسبة لي هي :
    كود:
                                                  
    otmangx-10.png otmangx-2.png otmangx-4.png otmangx-6.png otmangx-8.png otmangx-1.png otmangx-3.png otmangx-5.png otmangx-7.png otmangx-9.png



    آخر مثال في موضوعنا سيكون حول إزالة اسم المستخدم من بداية أسماء هذه الملفات ولأجل هذا سنستخدم الأمر التالي :
    كود:
    for i in *.png; do mv $i ${i/#$USER-/} ; done
    العلامة # عند استخدامها فهي عكس % التي استخدمناها قبل قليل ، أي أنها تقارن تواجد النص المطلوب في بداية محتوى المتغير لتتم عملية الاستبدال بعدها


    الموضوع القادم بإذن الله سيكون حول الأمر rename
      لا يمكن إضافة تعليقات.

    التصانيف

    تقليص

    Latest Articles

    تقليص

    • تجربة تثبيت توزيعة ديبيان بجانب ويندوز بدون usb او cd
      أحمد غريب
      التجربة تمت على VirtualBox النظام ويندوز اكسبي قرص صلب واحد قسمين c و d

      التجربة قسمين القسم الاول تجهيز ملف iso دبيان لعملية الاقلاع لايف من الهاردسك والقسم الثاني عملية الثتبيت تحتاج الى اتصال بالانترنت
      و استخدمت برنامج UltraISO لعمل virtual cd drive لملف iso

      1- نسخ ملف iso دبيان داخل القرص C
      2- تركيب الملف iso كقرص وهمي "mount"
      3- فتح debian-lnstaller loader ثم نكست نكست نكست

      4- حذف كل ما يوجد في ملف grup.cfg موجود في C داخل في مجلد win32-loader

      ثم اضافة مايلي
      كود:
      menuentry 'debian-live-8-amd64-gnome-desktop' {
          set isofile='/debian-live-8.6.0-amd64-gnome-desktop.iso'
          loopback loop $isofile
          linux (loop)/live/vmlinuz boot=live config fromiso=/dev/sda1/$isofile
          initrd (loop)/live/initrd.img
      }
      استبدال initrd.gz موجود في داخل win32-loade التحميل من الرابط
      http://ftp.nl.debian.org/debian/dists/testing/main/installer-amd64/current/images/hd-media/
      بعد ...
      27-11-2016, 03:08 PM
    • عداد الإستغفار
      مبتدى في للينكس
      السلام عليكم ورحمة الله و بركاته

      شرح فكرة السكربت:

      عداد الأستغفار يعمل عند الضغط على أختصار من الكيبورد و عند كل ضغطة يضيف 1 إلى العداد و يظهر إطار صغير في منتصف الشاشة لعرض العدد لمدة ثانية ثم يتم أغلاقه تلقائياً . أذا وصل العداد إلى 100 يرجع إلى الصفر. يتم حفظ العدد في ملف count.txt يتم إنشاءه تلقائياً بواسطة السكربت.


      شرح إعداد السكربت:

      1. قم بفتح مجلد Home وقم بإنشاء مجلد بإسم counter

      2. في داخل المجلد counter قم بإنشاء ملف نصي بإسم Counter.java , ثم قم بنسخ السكربت التالية و ضعه في داخل الملف ثم قم بالحفظ



      :
      package counter; import java.awt.BorderLayout; import java.awt.Event; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.io.IOException; import java.io.PrintWriter; import java.nio.charset.Charset; import java.nio.charset.StandardCharsets; import java.nio.file.Files; import java.nio.file.Paths; import java.util.logging.Level; import java.util.logging.Logger; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JButton; import javax.swing.SwingConstants; public class Counter extends JFrame { private static String fileName = System.getProperty("user.dir") + "/counter/count.txt"; public Counter() { this.setTitle("Counter"); this.setResizable(false); this.setLocationRelativeTo(null); this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); this.pack(); this.setSize(150, 150); this.setVisible(true); } public static void main(String[] args) { Counter obj = new Counter(); int count = 0; try { try { try { String countString = readFile(fileName, StandardCharsets.UTF_8).trim(); count = (int) Integer.parseInt(countString); } catch (Exception e) { outResult(fileName, String.valueOf(count)); } finally { if (count
      ...
      23-11-2016, 02:11 AM
    • سكربت بايثون لتسهيل تثبيت بعض الأشياء في فيدورا
      yucef
      بسم الله الرحمن الرحيم
      السلام عليكم ورحمة الله وبركاته




      قمت بعمل سكربت بايثون لتسهل تثبيت بعض الأشياء لفيدورا ,طريقة تنزيل وتشغيل السكربت مشروحة في هذا الرابط .

      https://github.com/yucefsourani/arfedy

      ...
      23-11-2016, 02:09 AM
    • إعادة تسمية الملفات باستخدام rename
      OtmanGX
      لينكس على السّريع : إعادة تسمية الملفات باستخدام rename


      تذكير بالموضوع السابق : إعادة تسمية الملفات باستخدام mv

      كما في المرة السابقة سنتحدث اليوم عن إعادة تسمية مجموعة من الملفات لكن باستخدام أداة أخرى وهي rename ؛ بحيث أنّنا لن نضطر لاستعمال حلقات التكرار والأمر مشابه نوعا ما لما يقوم به الأمرsed ، لكن الأداة rename تستخدم التعابير النظامية perlexpr لكننا سنذكر فقط التعابير النظامية المشتركة بين الاثنين .
      بعض خصائص الأمر :
      n, –no-act- : يوصى باستخدام هذه الخاصية كثيرا ، فمن خلالها يتم إظهار التغييرات التي ستتم بدون إجراء أي تعديل
      f, –force : الكتابة على الملفات بدون أدنى تحذير
      v, –verbose – : تفعيل وضع verbose ليتم إظهار التغييرات الجارية
      ويكون الشكل العام للأمر كالتالي :

      :
      rename [option] 's/old-name/new-name/' file
      باستبدال file بالملفات التي تود تغيير أسمائها
      كمثال أوّلي مثلا نريد استبدال المسافات الفارغة المتواجدة في أسماء الملفات أو المجلدات بالرمز _ :

      المثال 1 :
      :
      rename 's/ /_/g' *
      g ليتم الاستبدال في أكثر من موضع إن وجد
      الآن سنقوم كالعادة بإنشاء مجلد نقوم فيه بأمثلتنا
      ...
      23-11-2016, 02:05 AM
    • المراقبة العالمية ! Global surveillance
      عبدالرحمـن محمد
      السلام عليكم ورحمة الله

      مقدمة :
      في يونيو 2013، سرَّب إدوارد سنودين، وهو عميل متعاقد مع وكالة الأمن القومي، مستندات تّصِف بريسم "ومجموعة برامج أخري" بأنه برنامج يتيح مراقبة معمقة للاتصالات الحية والمعلومات المخزنة. ويمكن من استهداف أي عميل لشركة منخرطة في برنامج بريسم، في حال كان هذا العميل يسكن خارج الولايات المتحدة، أو كان مواطنًا أمريكيًا له اتصالات تتضمن محتويات وِب خاصة بأشخاص خارج الولايات المتحدة. البيانات التي يقال أن بريسم يمكِّن من الحصول عليها تتضمن، رسائل البريد الإلكتروني، ومحادثات الفيديو والصوت، والصور، والاتصالات الصوتية ببرتوكول الإنترنت، وعمليات نقل الملفات، وإخطارات الولوج وتفاصيل الشبكات الاجتماعية.
      كشفت الوثائق المسرّبة أن NSA كانت قادرة على الدخول مباشرة إلى الخوادم الخاصة لكل من
      ...
      23-11-2016, 02:04 AM
    • اضافة مستخدم لينيكس جديد و استعمال نفس اسم الحساب لMySQL و قاعدة بيانات بإسمه ايضًا.
      superlinux
      طبعًا هذه استعملها لفتح حساب جديد لشخص يريد ان يستعمل مجلده المنزل (او home directory بالانجليزي) لحفظ موقع الويب خاصته. يعني هذه طريقة ارجو تكون خفيفة ظريفة لإدارة الخادم عليكم. و هكذا ابدؤوا بيع المواقع عالسريع.

      انا استعمل دبيان 8.0 جسي هنا.

      قبل أي شيء, لتوظيف المجلدات المنزل كلها لتكون محافظ لصفحات ويب لكل مستخدم. نفعّل الوحدة userdir:
      :
      a2enmod userdir
      بس على شان تفهم كيف تحفظ الامر السابق: a2 = apache2 web server , enmod =enable module
      هناك الكثير من الاوامر تخص خادم الويب اباتشي تبدأ بــ a2 .

      ثم حرر بأي محرر نصي مثل vi او pico ملف اعدادات الاباتشي:

      :
      vi /etc/apache2/apache2.conf
      ضع في آخر سطر في الملف على سطر مستقل لوحده ما يلي:
      :
      UserDir public
      UserDir disable root
      الكلمة public_html هو اسم مجلد موجود في المجلد المنزل مباشرة. بمعنى لو كان عندك اسم مستخدم اسمه saleem (سليم) , لازم سليم يضع موقعه على الخادم داخل مسار القرص /home/saleem/public_html/ . و التعل...
      23-11-2016, 02:03 AM
    يعمل...
    X