0

أمر locate للبحث عن الملفات على لينوكس

السلام عليكم

أسهل طريقة للبحث عن الملفات من سطر الأوامر على لينوكس هي استخدام أمر locate الذي يكون موضوع هذه التدوينة. يوجد أيضا أمر find الذي يوفر خيارات أكثر للتحكم في البحث عن الملفات.

يُستخدم أمر locate بالطريقة التالية

locate [options] name(s)

حيث

  • options خيارات البحث
  • name(s) اسم أو أسماء الملفات المُراد البحث عنها. (معيار البحث)

في حالة عدم تحديد أي خيارات، فإن السلوك الافتراضي ل locate هو البحث في كل الملفات التي لدى المستخدم المُنفِّذ للأمر صلاحياتُ الوصول إليها، ثم إظهار اسم المسار المطلق (المسار الكامل) Absolute pathname للملفات المُدرجة في نتائج البحث.

مثال

locate "image.jpg"

كما يظهر في الصورة أدناه، فإن نتيجة البحث تعطي المسار الكامل لكل الملفات التي تحوي أسماءها image.jpg .
لزيادة إمكانيات البحث يمكن استخدام أحرف البدل wildcards أو التعبيرات النمطية regular expressions (). أحرف البدل هي أحرف(رموز) تُتخدم لتحل محل حرف مجموعة من الأحرف. من بين هذه الرموز علامة * التي تُستخدم لاستبدال مجموعة من الأحرف مهما كان عددها. مثلا للبحث عن كل الملفات ذات الامتداد png ننفذ الأمر التالي

locate "*.png"

تُمكن قراءة هذا الأمر  كما يلي: ابحث عن الملفات التي يتكون اسمها من عدد من الأحرف متبوعا بنقطة ثم الأحرف png.

خيار n-

في حال كنت ترغب بتعيين حد أقصى لنتائج الأمر locate فبإمكانك ذلك عبر الخيار n- متبوعا بعدد النتائج كما يلي

locate "*.png" -n 5
locate "*.png" -n 20

في الأمر الأول ستظهر فقط 5 ملفات على الأكثر. في الأمر الثاني زدنا الحد الأقصى إلى 20 ملفا.

خيار i-

الإعداد الافتراضي لأمر locate هو التفريق بين الأحرف الصغيرة والأحرف الكبيرة كما هو الحال في كل نظام لينكس. لتجاهل هذا الإعداد يُستعمل الخيار i- مثلا في الأمر

locate -i "*.Png"

ستظهر ملفات بامتداد png رغم أننا حددنا P كبيرة. في حال استخدام الأمر السابق دون i- فإن الملفات ذات الامتدا Png – إن وجدت – هي فقط ما سيظهر في النتائج.

خيار q-

يُستعمل هذا الخيار لحذف رسائل الخطأ من نتائج الأمر locate. مثلا حتى لا تظهر رسائل تقول إنه ليس لديك إذن الوصول لملف ما (تظهر هذه الرسائل permission dnied في حالة وافقَ ملف ما معيار البحث دون أن يكون لدى المستخدم صلاحيات الوصول إليه، لأنه ليس root على سبيل المثال).

locate "image.jpg" -q

خيار b-

عند تنفيذ locate للبحث عن اسم ملف (وليكن image.jpg ) فإن المطابقة لا تكون تامة. تظهر مثلا ملفات بأسماء مثل no_image.jpg . للبحث مع مطابقة معيار البحث نستخم خيار b- مع علامة  قبل اسم الملف كما يلي

locate -b "image.jpg"

تجربة أخيرة

إنشاء ملف ثم البحث عنه

لننشئ ملفا

touch test.it

فلنبحث عنه

locate -b "test.it"

النتيجة ؟؟ .. صفر !!

الآن ننفذ الأمر التالي بصلاحيّات Root

sudo updatedb

ولنعد البحث

locate -b "test.it"

وجدتَه؟ أظن الجواب نعم.

تحديث بيانات locate

تحديث بيانات locate

ما هذا ؟

عند طلب الأمر locate فإنه يبحث في قاعدة بيانات تحوي جميع أسماء الملفات الموجودة في النظام. استخدام قاعدة البيانات هذه يوفر الكثير من الوقت عند البحث. الوجه الآخر هو أن قاعدة البيانات هذه يجب تحديثها من حين لآخر وهو ما يقوم به النظام بشكل دوري (يوميا في الغالب) ثم إن النتائج التي نحصل عليها عند استخدام locate قد تحيل لملف لم يعُدْ موجودا (أي أن الملف حُذف بعد التحديث الأخير لقاعدة بيانات locate). مهمة الأمر updatedb هي تحديث قاعدة بيانات locate وهو ما يفسر أننا لم نحصل على الملف “test.it” عند البحث في المرة الأولى خلال التجربة السابقة ثم ظهر في النتائج بعد تحديث قاعدة البيانات وإعادة تنفيذ الأمر.

على توزيعة أوبنتو مسار قاعدة بيانات locate هو

/var/lib/mlocate/mlocate.db

وهو ما يمكن معرفته عبر الأمر التالي

locate -b "*locate.db"

للحصول على آخر الإضافات مباشرة بعد نشرها يُرجى الاشتراك في تغذيات RSS.

أو على تطبيق فيدلي عبر الضغط على الزر أدناه

تابعنا على تطبيق فيدلي

فضلًا.. شارك هذا المقال 🙂

Email this to someoneTweet about this on TwitterShare on FacebookShare on Google+Share on StumbleUpon

zeine77

محمد أحمد ولد العيل، مهندس نظم معلومات. مهتم بنظام تشغيل غنو/لينوكس والبرمجيات الحرّة والمفتوحة المصدر. أسعى من خلال هذه المدوّنة لإثراء المحتوى العربي على الشّبكة.

أضف تعليقاً

لن يتم نشر عنوان بريدك الإلكتروني. الحقول الإلزامية مشار إليها بـ *