1) ما هو أمر locate ولماذا نستخدمه؟
أمر locate يبحث عن الملفات/المجلدات بسرعة كبيرة لأنه لا يمشي على القرص لحظة البحث مثل find، بل يعتمد على قاعدة بيانات جاهزة (database) تحتوي مسارات الملفات.
متى يكون ممتاز؟
- عندما تريد “تبحث بسرعة” عن اسم ملف في النظام
- عندما تكون مساحة البحث كبيرة جدًا (مثل
/)
متى لا يكون مناسب؟
- إذا كنت تحتاج نتائج “لحظية” مباشرة بعد إنشاء ملف جديد (لأن قاعدة البيانات قد لا تكون محدثة)
- إذا تريد شروط متقدمة جدًا (صلاحيات/حجم/تاريخ بدقة) →
findأقوى
2) تثبيت locate (على Ubuntu / Linux Mint)
في كثير الأنظمة يأتي مع حزمة mlocate أو بديلها (مثل plocate في بعض التوزيعات). في Ubuntu غالبًا:
sudo apt update
sudo apt install -y mlocateBashتحقق:
locate --versionBash3) أهم شيء لازم تعرفه: تحديث قاعدة البيانات
locate يعتمد على قاعدة بيانات، لذلك قد لا يرى الملفات الجديدة إلا بعد تحديثها.
تحديث يدوي
sudo updatedbBashبدون
sudoقد لا يملك صلاحية فهرسة كل النظام.
4) الصيغة العامة (Syntax)
locate [OPTIONS] PATTERNBashPATTERNقد يكون اسم ملف مثلpasswd- أو جزء من المسار مثل
ssh_config - أو pattern يحتوي نجمة
*
5) أمثلة عملية بسيطة
أ) ابحث عن ملف باسم محدد
locate example.txtBashب) ابحث عن أي شيء يحتوي كلمة “ssh”
locate sshBashسيُرجع كل المسارات التي تحتوي “ssh” داخلها.
6) أمثلة عملية مع ملفات تنشئها أنت
أنشئ ملف ومجلد:
cd ~/project
mkdir -p sample_dir
touch sample_file.txtBashالآن غالبًا لن يظهر فورًا في locate إذا قاعدة البيانات قديمة. حدّثها:
sudo updatedbBashثم ابحث:
locate sample_file.txt
locate sample_dirBash7) استخدام Wildcards مع locate
أ) كل شيء يبدأ بـ sample
locate "sample*"Bashب) كل شيء ينتهي بـ .txt
locate "*.txt"Bashالأفضل تضع pattern بين اقتباس
" "حتى لا يفسره الـ shell قبلlocate.
8) أهم الخيارات المفيدة
أ) بحث بدون حساسية أحرف: -i
locate -i "Sample*"Bashب) تحديد عدد النتائج: -n
locate -n 20 "*.conf"Bashج) عرض عدد النتائج فقط: -c
locate -c "python"Bashد) البحث عن “اسم ملف” فقط وليس مسار كامل (basename): -b
مثلًا إذا تريد فقط الملفات اسمها hosts (حتى لو كانت في مسارات مختلفة):
locate -b "\hosts"Bash
\hostsهنا معناها: الاسم ينتهي بـhosts(بعض الأنظمة تحتاج الهروب بهذا الشكل).
9) فرق سريع بين locate و find (مهم للمبتدئ)
locate: سريع جدًا ✅ لكنه يعتمد على قاعدة بيانات وقد يكون غير محدثfind: أبطأ ❗ لكنه يبحث “فعليًا” الآن ويدعم شروط كثيرة (حجم/وقت/صلاحيات/exec…)
مثال:
- تريد ملف “اسمه” بسرعة →
locate - تريد ملفات
.logأكبر من 100MB داخل/var/logالآن →find
10) أخطاء ومشاكل شائعة
أ) “locate” لا يجد ملف أنشأته للتو
الحل:
sudo updatedbBashب) النتائج كثيرة جدًا
استخدم:
locate -n 50 "pattern"Bashأو فلترة بمتابعة مثل grep:
locate "ssh" | grep "/etc/"Bash11) تدريب سريع (Practice)
نفّذ التالي:
cd ~/project
mkdir -p locate_practice
touch locate_practice/hello.txt locate_practice/HELLO.TXT
# تحديث قاعدة البيانات
sudo updatedb
# 1) بحث عادي
locate hello.txt
# 2) بحث بدون حساسية أحرف
locate -i "hello.txt"
# 3) عدد النتائج
locate -c "hello"
# 4) أول 10 نتائج فقط
locate -n 10 "*.txt"Bashهل الشرح الأصلي كافي؟
نعم كبداية ممتاز، وأهم إضافتين للمبتدئ كانت:
- التأكيد على
sudo updatedbلأن بدونها قد تظن أن locate “لا يعمل” - خيارات عملية جدًا مثل
-nو-cلتقليل النتائج وفهم حجمها بسرعة