logo

ابحث عن الأمر في Linux/Unix مع الأمثلة

يساعدنا أمر البحث في العثور على ملف معين داخل الدليل. يتم استخدامه للعثور على قائمة الملفات لمختلف الشروط مثل الإذن وملكية المستخدم والتعديل والتاريخ/الوقت والحجم والمزيد.

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

يبدأ البحث من موقع البدء المطلوب، وبعد ذلك، يجتاز بشكل متكرر الدلائل (العقد) للبنية الهرمية (شجرة بشكل عام). يمكن لأمر البحث البحث والتنقل بين أنظمة تقسيم الملفات المختلفة التي تنتمي إلى جهاز تخزين واحد أو أكثر ضمن دليل البداية.

يحتوي تنسيق البحث على نمط للمطابقة مع اسم الملف أو النطاق الزمني للمطابقة مع وقت التعديل أو وقت الوصول إلى الملف. يوفر أمر البحث قائمة بكل ملف ضمن دليل العمل الحالي بشكل افتراضي. ومع ذلك، يمكن للمستخدمين تقييد البحث إلى الحد الأقصى المطلوب في دليل البداية.

تطبق برامج تحديد الموقع المرتبطة قاعدة بيانات ملفات مفهرسة تم الحصول عليها من الأمر الدقيق لتوفير تقنية أسرع للبحث في نظام الملفات بأكمله بالاسم.

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

 find 

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

على الأقل يجب أن يتوقع المسار التعبير. يمكن لأمر البحث تفسير أحرف البدل داخليًا، ويجب نقل الأوامر بعناية لإدارة التفاف الصدفة.

يتم عزل مكونات التعبير عن طريق حدود وسيطة سطر الأوامر، والتي يشار إليها عمومًا بمسافة بيضاء داخل بناء جملة الصدفة. ويعتبرون من الجانب الأيسر إلى الجانب الأيمن. يمكن أن تتضمن مكونات منطقية مثل OR وAND بالإضافة إلى المسندات (الإجراءات والمرشحات). يحتوي GNU find على العديد من الميزات الأخرى التي لم يذكرها POSIX.

يتم استخدام الرموز التالية لتحديد الدليل:

(.) : لاسم الدليل الحالي

(/) : للدليل الجذر

تاريخ موجز لأمر البحث

حدث أمر البحث في الإصدار 5 Unix كعنصر من عناصر طاولة عمل المبرمج المشروع وتم تحديده بواسطة ديك هايت مع cpio، والتي تم تطويرها لاستخدامها معًا.

في الأصل، تم تحديد تنفيذ GNU لأمر البحث بواسطة اريك ديكر . وفي وقت لاحق، تم تطويره من قبل ديفيد ماكنزي، تيم وود ، و جاي بليت . بالإضافة إلى ذلك، تم نقل أمر البحث إلى نظام التشغيل IBM iOS.

خوارزمية لbfs

المسندات

الانتخابات التمهيدية المستخدمة على نطاق واسع هي:

    -نمط الاسم:إنه يتحقق من أن اسم الملف هو نفس نمط Shell-glob المحدد أم لا.-نوع النوع:يتحقق من أن الملف من النوع المقدم.-مطبعة:إنه يعطي دائمًا القيمة الحقيقية. يقوم بطباعة اسم الملف الحالي وسطر جديد لـ stdout.-طباعة0:إنه يعطي دائمًا القيمة الحقيقية. يقوم بطباعة اسم الملف الحالي وحرف فارغ إلى stdout. لا يحتاجها POSIX.-برنامج exec [وسيطة ...]؛:إنه يعطي دائمًا القيمة الحقيقية. يقوم بتنفيذ برنامج باستخدام الوسائط المعطاة الثابتة ومسار الملف الحالي.-برنامج exec [وسيطة ...] { } +:إنه يعطي دائمًا القيمة الحقيقية. يقوم بتنفيذ برنامج باستخدام الوسائط المعطاة الثابتة وبأكبر عدد ممكن من المسارات. بالنسبة لكل تطبيق تقريبًا، تعني الأحداث {} الأخرى نسخًا إضافية من الاسم المحدد (الجانب الذي لا يحتاجه POSIX).-موافق البرنامج [الوسيطة ...]؛:إنه نفس -exec، ولكنه سيعيد خطأ أو صحيحًا إذا أعطى البرنامج 0.

ابحث عن الإعدادات الافتراضية لتنفيذ -print في حالة تحقق الشروط إذا كان التعبير لا يستخدم أيًا من -ok أو -exec أو -print أو -print0.

العاملين

يقوم المشغلون بتحسين تعبيرات أمر البحث. وقد تم ذكرها حسب الترتيب التنازلي:

    (إكسبر):يمكن لهذا المشغل فرض الأسبقية.! إكسبر:إذا أعاد expr خطأ، فإنه يُرجع صحيحًا.
  • expr1 expr2 (أو expr1 -a expr2 : AND.expr2 لا يتم تقييمه إذا كانت expr1 خاطئة.
  • expr1 -o expr2 : أو. لا يتم تقييم expr2 إذا كان expr1 صحيحًا.

أمثلة على أمر البحث

دعونا نرى الأمثلة التالية لأمر البحث:

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

يمكننا البحث في جميع الملفات التي تنتهي بالامتداد '.txt'. للقيام بذلك، قم بتنفيذ الأمر أدناه:

scan.nextstring java
 find . -name '*.txt' 

سيقوم الأمر أعلاه بسرد كافة الملفات النصية من دليل العمل الحالي. النظر في الإخراج أدناه:

العثور على لينكس

من الناتج أعلاه، يتم إدراج كافة الملفات ذات الامتداد '.txt' مع أمر البحث.

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

يتم استخدام المعلمة '-type' لتحديد نوع الملف.

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

  • و: ملف عادي
  • د: الدليل
  • ل: روابط رمزية
  • ج: أجهزة الشخصية
  • ب: منع الأجهزة

خذ بعين الاعتبار الأمر أدناه:

 find . -type d -name '*.bak' 

سيقوم الأمر أعلاه بسرد كافة الدلائل ذات الامتداد '.bak'. النظر في الإخراج أدناه:

العثور على لينكس

من الإخراج أعلاه، الأمر 'العثور على'. -type d -name '*.bak' يعرض كافة الدلائل التي تنتهي بـ '.bak'.

البحث عن الملفات الأحدث

تساعد المعلمة '-newer' في البحث عن الملفات الأحدث من الملف المذكور. خذ بعين الاعتبار الأمر أدناه:

 find . -newer msg.txt 

سيعرض الأمر أعلاه كافة الملفات الأحدث من 'msg.txt' من دليل العمل الحالي. النظر في الإخراج أدناه:

العثور على لينكس

من الإخراج أعلاه، كافة الملفات المعروضة أحدث من ملف 'msg.txt'.

البحث عن ملف وحذفه

يتم استخدام خيار '-delete' لحذف ملف معين. يجب أن نكون حذرين للغاية أثناء استخدام هذا الأمر لأنه لا يوجد خيار للتراجع إذا تم تنفيذه مرة واحدة. خذ بعين الاعتبار الأمر أدناه:

 find . -name Demo.txt -delete 

سيقوم الأمر أعلاه بحذف الملف 'Demo.txt' من دليل العمل الحالي. النظر في الإخراج أدناه:

العثور على لينكس

ابحث عن دليل

يتم استخدام خيار 'type -d' للعثور على دليل. خذ بعين الاعتبار الأمر أدناه:

مكرر جافا للخريطة
 find . type -depth -name Newdirectory 

سيجد الأمر أعلاه موقع 'الدليل الجديد'. النظر في الإخراج أدناه:

العثور على لينكس

البحث عن الملفات حسب وقت التعديل

يتم استخدام الخيار '-mtime'، متبوعًا بعدد الأيام، للعثور على الملفات عن طريق التعديل. يمكن أن يكون عدد الأيام إيجابيا أو سلبيا. سيتم استخدام القيمة السالبة لأقل من استخدام -1 لليوم الأخير، وبالمثل، سيبحث +1 عن الملف منذ أكثر من يوم واحد. خذ بعين الاعتبار الأمر أدناه:

 find ./Newdirectory -mtime -1 

سيجد الأمر أعلاه الملفات التي تم تعديلها خلال اليوم الأخير. النظر في الإخراج أدناه:

العثور على لينكس

البحث عن الملفات بإذن

يتم استخدام خيار '-perm' للعثور على الملفات بإذن. قم بتنفيذ أمر البحث باستخدام خيار '-perm' وقم بتمرير القيمة المطلوبة. خذ بعين الاعتبار الأمر أدناه:

 find ./ -perm 777 

سيقوم الأمر أعلاه بسرد الملفات من الدليل المحدد والتي يمكن للجميع قراءتها وكتابتها وتنفيذها.

البحث عن الملفات واستبدالها

للعثور على الملفات واستبدالها، يتعين علينا دمج أمر البحث مع الأمر sed. للعمل على الملفات، استخدم الخيار '-exec' مع أمر البحث. خذ بعين الاعتبار الأمر أدناه:

 find ./Newdirectory -type f -exec sed -i 's/find/replace/g' {} ; 

من الأمر أعلاه، سيتم استبدال التكرار المحدد. النظر في الإخراج أدناه:

العثور على لينكس

البحث عن النص داخل ملفات متعددة

يمكننا إنشاء مجموعة أخرى من أمر البحث مع الأمر grep للعثور على النص من الملفات المختلفة. خذ بعين الاعتبار الأمر أدناه:

 find ./Newdirectory -type f -name '*.txt' -exec grep 'demo' {} ; 

سيجد الأمر أعلاه الأسطر التي تحتوي على النص 'demo' من جميع الملفات النصية داخل الدليل 'Newdirectory'. النظر في الإخراج أدناه:

العثور على لينكس

من الناتج أعلاه، يمكننا أن نرى الأسطر التي تحتوي على النص 'demo' قد تم عرضها.

ابحث في كل دليل

 $ find / -name file1 -type f -print 

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