كيفية البحث عن ملفات على لينكس باستخدام find و locate

البحث عن ملفات على لينكس باستخدام find و locate

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

متطلبات

من أجل المضي قدمًا في هذا البرنامج التعليمي، يجب أن يكون لديك جهاز كمبيوتر يعمل بنظام تشغيل يعتمد على Linux. يمكن أن يكون هذا إما آلة محلية أو خادم خاص افتراضي يمكن الوصول إليه من خلال SSH. بينما تم التحقق من العروض التوضيحية في هذا الدليل في Ubuntu 20.04، يجب أن تعمل على أي توزيع Linux.

البحث عن طريق اسم الملف

الطريقة الأكثر استخدامًا للبحث عن الملفات هي باسمها. لتحديد ملف بالاسم باستخدام find الأمر، يمكنك استخدام الجملة التالية:

$ find / -name "query"

افتراضيًا، هذا البحث حساس للحالة. إذا كنت ترغب في إجراء بحث غير حساس للحالة، فيمكنك توظيف -iname خيار:

$ find / -iname "query"

إذا كنت ترغب في العثور على جميع الملفات التي لا تتطابق مع نمط معين، يمكنك استخدام -not خيار:

$ find / -not -name "query_to_avoid"

بدلاً من ذلك، يمكنك استخدام نقطة التعجب (!) لقلب البحث:

$ find / \! -name "query_to_avoid"

عند استخدام علامة التعجب، تذكر أن تتجاهلها مع شرطة مائلة للخلف (\) تجنب shell من تفسيرها.

البحث حسب نوع الملف

طريقة أخرى للبحث عن الملفات تعتمد على نوعها باستخدام  -typeالبارامتر . فيما يلي بعض واصفات النوع التي يمكنك استخدامها:

  • f: ملف عادي
  • d: دليل
  • l: ارتباط رمزي
  • c: أجهزة حرف
  • b: أجهزة حظر

على سبيل المثال، إذا كنت تريد العثور على جميع أجهزة الأحرف في نظامك، فقم بتنفيذ الأمر التالي:

$ find /dev -type c

البحث عن ملفات ذات امتداد محدد (على سبيل المثال، .conf), توظيف -name جنبا إلى جنب مع *.extension نمط:

$ find /usr -type f -name "*.conf"

يمكنك الجمع بين تعابير بحث متعددة باستخدام -and المشغل (ضمنا عندما لا يكون هناك خيار محدد) أو -or مشغل:

$ find -name query_1 -or -name query_2

الترشيح حسب الحجم والوقت

find يقدم الأمر خيارات مختلفة لتصفية الملفات بناءً على حجمها ووقتها.

حجم

لتصفية الملفات حسب الحجم، استخدم -size تليها قيمة الحجم وعقبة تشير إلى الوحدة. تشمل اللواحق ذات الحجم الشائع ما يلي:

  • c: bytes
  • k: kilobytes
  • M: megabytes
  • G: gigabytes
  • b: 512-byte blocks

على سبيل المثال، لتحديد الملفات التي يبلغ حجمها 50 بايت بالضبط:

$ find /usr -size 50c

للعثور على ملفات أصغر من 50 بايت:

$ find /usr -size -50c

وقت

لتصفية الملفات بناءً على وقت التعديل، يمكنك توظيف -mtime-atime, and -ctime بارامترات.

  • -mtime على أساس وقت تعديل الملف.
  • -atime على أساس وقت الوصول إلى الملف.
  • -ctime على أساس وقت تغيير الملف.

يمكنك تحديد الوقت باستخدام تنسيقات مختلفة:

  • n: العدد الدقيق لفترات 24 ساعة مضت.
  • +n: منذ أكثر من 24 ساعة.
  • -n: قبل أقل من 24 ساعة.

على سبيل المثال، للعثور على الملفات المعدلة خلال الأيام 7 الماضية:

$ find /usr -mtime -7

لتحديد الملفات التي تم الوصول إليها منذ أكثر من 30 يومًا:

$ find /usr -atime +30

اكتشاف الملفات التي تغيرت بياناتها الوصفية (مثل الأذونات) خلال الـ 24 ساعة الماضية:

$ find /usr -ctime 0

العثور بواسطة المالك والأذونات

find يسمح لك الأمر أيضًا بالبحث عن الملفات بناءً على مالكها والأذونات.

مالك

للعثور على ملفات مملوكة لمستخدم معين، يمكنك استخدام -user يليه اسم المستخدم. على سبيل المثال، للبحث عن الملفات المملوكة للمستخدم “john”:

$ find / -user john

أذونات

يمكنك البحث عن الملفات بناءً على أذوناتهم باستخدام -perm البارامتر. يقبل هذا المعامل نمط رقمي أو تدوين رمزي يمثل الأذونات المطلوبة.

للعثور على ملفات ذات أذونات محددة معبر عنها في الوضع الرقمي، استخدم رقم ثماني مكون من ثلاثة أرقام. على سبيل المثال، للبحث عن الملفات بالقراءة والكتابة وتنفيذ الأذونات للمالك، وقراءة الأذونات للآخرين:

$ find / -perm 744

للبحث عن ملفات ذات أذونات محددة معبر عنها في تدوين رمزي، استخدم مزيجًا من u (user), g (group), o (others), r (read), w (write), and x (execute). على سبيل المثال، للبحث عن الملفات مع أذونات القراءة والكتابة للمالك:

$ find / -perm u=rw

يمكنك أيضًا الجمع بين أذونات متعددة وتحديد مستويات ملكية مختلفة في التدوين الرمزي. على سبيل المثال، للبحث عن الملفات مع قراءة وتنفيذ الأذونات للمالك، وكتابة إذن للمجموعة، وقراءة الإذن للآخرين:

$ find / -perm u=rx,g=w,o=r

خلال استخدام -user و -perm الخيارات، يمكنك البحث بشكل فعال عن الملفات بناءً على مالكها والأذونات.

تنفيذ الأوامر عند العثور على النتائج

find لا يساعدك الأمر على تحديد الملفات فحسب، بل يمكّنك أيضًا من إجراء إجراءات على نتائج البحث. يمكنك تنفيذ أوامر مختلفة على الملفات التي وجدتها find باستخدام مؤشر -exec خيار.

التركيبة الأساسية لتنفيذ الأوامر على find فيما يلي النتائج:

$ find /path/to/search -name "query" -exec command {} \;

في هذا البناء:

  • /path/to/search هو الدليل حيث تريد البحث عن الملفات.
  • "query" هو استعلام أو نمط البحث لمطابقة أسماء الملفات.
  • command هو الأمر الذي تريد تنفيذه في كل ملف تم العثور عليه.
  • {} يمثل المساعد للملف الموجود.
  • \; يستعمل لإنهاء -exec خيار.

على سبيل المثال، حذف جميع الملفات مع .log والإطالة في /var/log الدليل، يمكنك استخدام الأمر التالي:

$ find /var/log -name "*.log" -exec rm {} \;

هذا الأمر سينفذ rm أمر على كل ملف عثر عليه find, حذف جميع الملفات مع .log .

يمكنك أيضًا دمج أوامر متعددة أو تمرير حجج إضافية إلى الأمر. فقط تأكد من الهروب بشكل صحيح من أي شخصيات خاصة.

باستخدام مؤشر -exec الخيار مع find الأمر يوفر المرونة في تنفيذ الإجراءات على نتائج البحث، مما يجعله أداة قوية لإدارة الملفات والأتمتة.

استخدام locate أمر

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

تهيئة قاعدة البيانات:

قبل استخدام locate الأمر، من المهم التأكد من تحديث قاعدة البيانات. نفذ الأمر التالي على النحو التالي root أو مع sudo:

$ sudo updatedb

يقوم هذا الأمر بتحديث قاعدة البيانات المستخدمة من قبل locate لفهرسة نظام الملفات.

البحث عن الملفات:

للبحث عن الملفات باستخدام locate, ببساطة حدد الكلمة الرئيسية أو النمط الذي تريد البحث عنه. على سبيل المثال:

$ locate file.txt

سيجد هذا الأمر جميع الملفات التي تحتوي على ‘file.txt’ باسمها.

حساسية الحالة:

افتراضيا، locate الأمر غير حساس للقضية. إذا كنت ترغب في إجراء بحث حساس للحالة، فاستخدم -i خيار. على سبيل المثال:

$ locate -i File.txt

سيجد هذا الأمر ملفات تحمل اسم ‘File.txt’ أو ‘file.txt’.

تحديث قاعدة البيانات:

قاعدة بيانات الملفات المستخدمة من قبل locate قد لا يكون دائما مستكملا. للتأكد من أن لديك آخر معلومات الملفات، قم بتحديث قاعدة البيانات بشكل دوري باستخدام updatedb أمر.

خلاصة

البحث عن ملفات على لينكس يمكن إنجازه باستخدام find و locate أوامر. find يوفر الأمر مزيدًا من المرونة ويسمح بإجراء عمليات بحث دقيقة بناءً على معايير مختلفة، مثل اسم الملف والنوع والحجم والوقت. من ناحية أخرى, locate الأمر يوفر بحثًا أسرع باستخدام قاعدة بيانات مبنية مسبقًا.

من خلال إتقان هذه الأوامر، يمكنك تحديد موقع الملفات بكفاءة على نظام Linux الخاص بك وتبسيط سير العمل.

LEAVE A COMMENT