Linux FIND Command مع أمثلة

هل تعرف عدد الملفات الموجودة في تثبيت جديد لنظام Linux(Linux) ؟ إذا كنت تستخدم PopOS! توزيع Linux(Linux distribution) كمثال ، هناك أكثر من 31000 ملف. هذا قبل البدء في إنشاء أي مستندات أو تخزين الموسيقى أو تنزيل ملفات PDF(PDFs) أو تنظيم الصور.

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

Linux البحث عن بناء جملة الأوامر(Linux FIND Command Syntax)

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

البحث عن [المسار] [الشروط] [الإجراءات](find [path] [conditions] [actions])

إليك ما يعنيه ذلك:

find - تبدأ أداة البحث(Find) في Linux

المسار(path ) - أن ننظر فيها

الشروط(conditions ) - الحجج التي تريد تطبيقها على البحث

الإجراءات(actions ) - ماذا تريد أن تفعل بالنتائج

مثال بسيط باستخدام الثلاثة يبدو كما يلي:

تجد . -اسم ملف-sample.rtf -print(find . -name file-sample.rtf -print)

كما خمنت ، سيجد هذا اسم الملف file-sample.rtf(file-sample.rtf)

يخبر مسار النقطة ( . ) البحث عن البحث في الدليل الحالي وأي أدلة بداخله. 

يخبر الشرط -name العثور على الملف بهذا الاسم المحدد.

يقوم الإجراء -print بإخبار FIND بإظهار النتائج على الشاشة.

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

لينكس البحث في دليل آخر(Linux FIND In Another Directory)

يمكنك البحث في دليل مختلف عن الدليل الذي أنت فيه. فقط(Just) أدخل المسار إلى الدليل بعد FIND . إذا كنت في الجذر وتعرف أن الملف موجود في مكان ما في الدليل home/user ، فستستخدم:

find home/user -name file-sample.rtf

لا يزال بحثًا متكررًا ، لذلك سوف يمر عبر كل دليل تحت المستخدم(user) .

Linux البحث عن أدلة متعددة(Linux FIND Search Multiple Directories)

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

find /lib /var /bin -name file-sample.rtf

Linux FIND مع عدم وجود العودية أو الحد من العودية(Linux FIND with No Recursion or Limiting Recursion)

إذا استخدمت الأمر FIND أعلاه على مستوى الجذر ، فسيقوم بالبحث في كل دليل على النظام. لذلك إذا كنت تريد التمسك بالدليل الحالي فقط ، فاستخدم خيار -maxdepth . يوضح الرقم بعد العمق الأقصى العثور على مدى العمق الذي يجب أن تذهب إليه قبل التوقف. 

استخدام -maxdepth 1 يعني هذا الدليل فقط. 

اعثر على -اسم ملف-sample.rtf-maxdepth 1(find -name file-sample.rtf -maxdepth 1)

استخدام -maxdepth 2 أو رقم أكبر يعني الذهاب إلى تلك المستويات العديدة بشكل أعمق.

اعثر على -maxdepth 5 -name file-sample.rtf(find -maxdepth 5 -name file-sample.rtf)

مثال على Linux FIND Wildcard(Linux FIND Wildcard Example)

يستخدم الأمر FIND العلامة النجمية ( (FIND)* ) كحرف بدل. استخدمه لأي جزء من الاسم لست متأكدًا منه. يمكن استخدامه أكثر من مرة في الاسم. بدون نوع الملف كجزء من اسم الملف ، ستتضمن النتائج أيضًا الدلائل المطابقة.

find home/user -name file*sample*

Linux البحث عن طريق مثال النوع(Linux FIND by Type Example)

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

و - ملف

د - الدليل

ب - جهاز كتلة

ج - جهاز الشخصية

ل - ارتباط رمزي

مقبس - مقبس

find home/user -name file*sample* -type d

Linux FIND مثال غير حساس لحالة الأحرف(Linux FIND Case Insensitive Example)

على عكس Windows ، يهتم Linux بما إذا كان الحرف كبيرًا أم صغيرًا. (Linux)لذلك إذا كنت تريد البحث عن كل من File-Sample.rtf(File-Sample.rtf) و file-sample.rtf ، فاستخدم الخيار -iname .

find home/user -iname File-Sample.rtf

لينكس البحث عن عدة ملفات على سبيل المثال(Linux FIND Several Files Example)

لنفترض أنك أردت العثور على نسختين .rtf و. html من ملف. يمكن القيام بذلك في أمر واحد باستخدام عامل التشغيل -o (أو). في بعض التوزيعات ، قد تحتاج إلى وضع الأسماء داخل أقواس ، مثل (-name file-sample.rtf -o -name file-sample.html)

find home/user -name file-sample.rtf -o -name file-sample.html

العثور على ملفات Linux التي لا تتطابق مع الاسم(Linux FIND Files That Don’t Match a Name)

ربما تعلم أن هناك نسخة .html من الملف ، ولكن ليس إذا كان هناك إصدارات أخرى. (.html)يمكنك تصفية نسخة html خارج البحث باستخدام الخيار -not .

find home/user -name file-sample* -not -name *.html

لينكس البحث عن نتائج بدون أخطاء(Linux FIND Without Error Results)

في البحث الذي لا يحتوي على مثال العودية ، لاحظ أنه قام بإدراج كل دليل لا يمكنه البحث فيه والنتيجة الصحيحة. هذا مزعج. دعونا نوقفه عن إظهار كل تلك الدلائل "تم رفض الإذن ". (Permission)ادمجه مع أمر Linux(Linux terminal command) آخر ، grep. يمكنك أيضًا استخدام البحث(Find) مع grep للعثور على الملفات التي تحتوي على كلمات محددة فيها(find files with specific words in them) .

find -maxdepth 5 -name file-sample.rtf 2>&1 | grep -v “Permission denied”

دعنا نقسم 2>&1 .

2 - يمثل stderr وهو اختصار لمخرجات الأخطاء المعيارية. 

1 - يمثل stdout وهو اختصار للإخراج القياسي

> - تعني إعادة توجيه أي ناتج على يساره إلى ما هو على يمينه.

& - تعني التجميع.

لذا فإن 2>&1 تعني أخذ الأخطاء المعيارية وإعادة توجيهها ، ثم جمعها مع الإخراج القياسي في إخراج واحد.

الآن دعونا نلقي نظرة على | grep -v “Permission denied” .

| (يسمى الأنبوب) - يخبر Linux بإدخال نتائج أي شيء على يساره إلى كل ما هو على يمينه. يتم إطعامها لأمر grep.

grep - أداة مساعدة للبحث عن النص. 

-v - يخبر grep بالبحث عن أي شيء لا يطابق النص الموجود على يسار حرف v. في هذه الحالة ، يُطلب من grep البحث عن أي شيء لا يحتوي على النص أو السلسلة ، " تم رفض الإذن(Permission) ." لذلك سيعرض لك grep النتائج التي تبحث عنها فقط وأي أخطاء لا تتطابق مع " تم رفض الإذن(Permission) ".

Linux البحث عن طريق مثال الأذونات(Linux FIND by Permissions Example)

لاستخدام هذا بشكل جيد ، تحتاج إلى معرفة أذونات Linux(learn Linux permissions)

تحتوي جميع ملفات الأمثلة على الأذونات 664 ، باستثناء ملف واحد له الأذونات 775. استخدم الخيار -perm للعثور عليه.

find Documents/ -name file-sample* -type f -perm 775

Linux البحث عن طريق مثال الحجم(Linux FIND by Size Example)

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

م - ميغا بايت

G - جيجا بايت

ك - كيلو بايت

ب - كتل (512 بايت - افتراضي)

ج - بايت

w - الكلمات (اثنان بايت معًا)

find -size +500k

Linux البحث عن طريق المالك(Linux FIND by Owner)

هناك طريقتان للعثور على الملفات من قبل المالك. أحدهما باسم مستخدم المالك والآخر حسب مجموعة المستخدم. للبحث عن طريق اسم المستخدم ، استخدم خيار -user ، متبوعًا باسم المستخدم. للبحث عن مجموعة المستخدمين ، استخدم -group متبوعًا باسم المجموعة ..

ابحث عن -user groupname(find -user groupname ) أو اعثر على -user username(find -user username)

ملفات Linux FIND حسب آخر مثال تم تعديله(Linux FIND Files by Last Modified Example)

للعثور على الملفات التي تم تعديلها أو تحريرها في آخر X عدد من الأيام ، استخدم -mtime متبوعًا برقم. سيؤدي وضع علامة الطرح ( - ) أمام الرقم إلى العثور على أي شيء تم تغييره خلال تلك الأيام العديدة قبل الآن. تعني علامة الجمع ( + ) خلال تلك الأيام العديدة قبل الآن. 

find -name “file-sample*” -mtime +5 (greater than 5 days ago)

find -name “file-sample*” -mtime -5 (less than 5 days ago)

للعثور على آخر تعديل خلال دقائق ، استخدم الخيار -mmin متبوعًا بعدد الدقائق. استخدم + و - مثل أعلاه.

find -name “file-sample*” -mmin -5

find -name “file-sample*” -mmin +5

بحث عن ملفات Linux حسب آخر مثال على TIme تم الوصول إليه(Linux FIND Files by Last Accessed TIme Example)

الخيار المستخدم للبحث عن الملفات بناءً على وقت فتحها آخر مرة هو -وقت(-atime ) لأيام و -امين(-amin ) لدقائق. اتبعه بعدد الأيام أو الدقائق للعودة واستخدم علامة + و- أكبر من وأقل من.

find -name “file-sample*” -atime -5

find -name “file-sample* -amin -5

ادمج FIND مع أوامر Linux الأخرى(Combine FIND with Other Linux Commands)

يوجد مثال واحد أعلاه لاستخدام find مع الأمر grep ، ويمكنك استخدامه مع العديد من الآخرين. يمكنك أن ترى أن استخدام البحث والأوامر الأخرى يمكن أن يكون قويًا جدًا وموفرًا للوقت. تخيل أنك مضطر(Imagine) إلى حذف مجموعة من نوع معين من الملفات. بدلاً من البحث في مستكشف الملفات ، ما عليك سوى صياغة الأمر الصحيح ، ويتم ذلك في ثوانٍ. كيف ستستخدم أمر البحث الآن؟



About the author

أنا مهندس برمجيات بخبرة تزيد عن 10 سنوات في العمل على أجهزة Apple iOS والأجهزة الطرفية. جعلتني تجربتي في هندسة الأجهزة شغوفًا بالتأكد من أن أجهزة عملائنا موثوقة وسلسة قدر الإمكان. لقد كنت أكتب كودًا خلال السنوات القليلة الماضية وتعلمت استخدام Git و Vim و Node.js.



Related posts