يساعدنا أمر البحث في العثور على ملف معين داخل الدليل. يتم استخدامه للعثور على قائمة الملفات لمختلف الشروط مثل الإذن وملكية المستخدم والتعديل والتاريخ/الوقت والحجم والمزيد.
في أنظمة التشغيل المشابهة لنظام Unix وأنظمة التشغيل الأخرى، يعد أمر البحث أداة مساعدة لسطر الأوامر تبحث عن الملفات على أساس عدد قليل من التنسيقات المحددة من قبل المستخدم وإما أن تطبع اسم مسار الكائن المطابق بالكامل، أو تنفذ هذا الإجراء في حالة طلب إجراءات أخرى كافة الكائنات المتطابقة.
يبدأ البحث من موقع البدء المطلوب، وبعد ذلك، يجتاز بشكل متكرر الدلائل (العقد) للبنية الهرمية (شجرة بشكل عام). يمكن لأمر البحث البحث والتنقل بين أنظمة تقسيم الملفات المختلفة التي تنتمي إلى جهاز تخزين واحد أو أكثر ضمن دليل البداية.
يحتوي تنسيق البحث على نمط للمطابقة مع اسم الملف أو النطاق الزمني للمطابقة مع وقت التعديل أو وقت الوصول إلى الملف. يوفر أمر البحث قائمة بكل ملف ضمن دليل العمل الحالي بشكل افتراضي. ومع ذلك، يمكن للمستخدمين تقييد البحث إلى الحد الأقصى المطلوب في دليل البداية.
تطبق برامج تحديد الموقع المرتبطة قاعدة بيانات ملفات مفهرسة تم الحصول عليها من الأمر الدقيق لتوفير تقنية أسرع للبحث في نظام الملفات بأكمله بالاسم.
تأتي أداة البحث بشكل افتراضي مع معظم ملفات توزيعات لينكس ، لذلك لا نحتاج إلى تثبيت أي حزمة إضافية. إنها واحدة من أهم الأوامر وأكثرها استخدامًا في لينكس نظام.
find
يحدد الخياران كيف يجب أن يأخذ البحث في الاعتبار الروابط الرمزية. الطبيعة الافتراضية هي عدم متابعة الروابط الرمزية أبدًا. العلم، أي -ل ، سوف يؤدي البحث إلى متابعة الروابط الرمزية. العلم، أي -ح ، سيتبع فقط الروابط الرمزية مع الاستمرار في وسيطات سطر الأوامر. تم ذكر العلامات في معيار POSIX لأمر البحث. الامتداد الأساسي هو العلم، على سبيل المثال، -ص ، لتعطيل الارتباط الرمزي التالي بشكل صريح.
على الأقل يجب أن يتوقع المسار التعبير. يمكن لأمر البحث تفسير أحرف البدل داخليًا، ويجب نقل الأوامر بعناية لإدارة التفاف الصدفة.
يتم عزل مكونات التعبير عن طريق حدود وسيطة سطر الأوامر، والتي يشار إليها عمومًا بمسافة بيضاء داخل بناء جملة الصدفة. ويعتبرون من الجانب الأيسر إلى الجانب الأيمن. يمكن أن تتضمن مكونات منطقية مثل OR وAND بالإضافة إلى المسندات (الإجراءات والمرشحات). يحتوي GNU find على العديد من الميزات الأخرى التي لم يذكرها POSIX.
يتم استخدام الرموز التالية لتحديد الدليل:
(.) : لاسم الدليل الحالي
(/) : للدليل الجذر
تاريخ موجز لأمر البحث
حدث أمر البحث في الإصدار 5 Unix كعنصر من عناصر طاولة عمل المبرمج المشروع وتم تحديده بواسطة ديك هايت مع cpio، والتي تم تطويرها لاستخدامها معًا.
في الأصل، تم تحديد تنفيذ GNU لأمر البحث بواسطة اريك ديكر . وفي وقت لاحق، تم تطويره من قبل ديفيد ماكنزي، تيم وود ، و جاي بليت . بالإضافة إلى ذلك، تم نقل أمر البحث إلى نظام التشغيل IBM iOS.
خوارزمية لbfs
المسندات
الانتخابات التمهيدية المستخدمة على نطاق واسع هي:
ابحث عن الإعدادات الافتراضية لتنفيذ -print في حالة تحقق الشروط إذا كان التعبير لا يستخدم أيًا من -ok أو -exec أو -print أو -print0.
العاملين
يقوم المشغلون بتحسين تعبيرات أمر البحث. وقد تم ذكرها حسب الترتيب التنازلي:
- 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 ويطبعه على الشاشة. بشكل عام، ليس من الجيد البحث عن الملفات بهذه الطريقة. يمكن أن يستغرق قدرا كبيرا من الوقت. لذا، فمن الأفضل أن نذكر الدليل. قد تقوم بعض أنظمة التشغيل بتثبيت أنظمة ملفات (ديناميكية) غير مناسبة لأمر البحث. قد تتطلب أسماء الملفات الأكثر تعقيدًا التي تحتوي على أحرف فريدة للصدفة أن يتم إغلاقها بين علامات اقتباس مفردة.