أمر 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.

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

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

للمزيد

http://www.linfo.org/locate.html
http://www.codecoffee.com/tipsforlinux/articles/20.html

Advertisements

Tagged: , , , ,

هل لديك إضافة، تصحيح أو كلمة شكر؟ مربع التعليق موجود لهذا الغرض

إملأ الحقول أدناه بالمعلومات المناسبة أو إضغط على إحدى الأيقونات لتسجيل الدخول:

WordPress.com Logo

أنت تعلق بإستخدام حساب WordPress.com. تسجيل خروج   / تغيير )

صورة تويتر

أنت تعلق بإستخدام حساب Twitter. تسجيل خروج   / تغيير )

Facebook photo

أنت تعلق بإستخدام حساب Facebook. تسجيل خروج   / تغيير )

Google+ photo

أنت تعلق بإستخدام حساب Google+. تسجيل خروج   / تغيير )

Connecting to %s