.\" -*- coding: UTF-8 -*- .\" -*- nroff -*- .\"******************************************************************* .\" .\" This file was generated with po4a. Translate the source file. .\" .\"******************************************************************* .TH FIND 1 '\" t .SH الاسم find \- ابحث عن الملفات في هيكلية أدلة .SH موجز \fBfind\fP [\-H] [\-L] [\-P] [\-D debugopts] [\-Olevel] [starting\-point...\&] [expression] . .SH الوصف توثق صفحة الدليل هذه نسخة GNU من \fBfind\fP. يبحث GNU \fBfind\fP في شجرة الأدلة التي تبدأ من كل \fIstarting\-point\fP (نقطة بداية) معطاة عبر تقييم الـ \fIexpression\fP (تعبير) المعطى من اليسار إلى اليمين، وفقًا لقواعد الأسبقية (انظر قسم OPERATORS)، حتى تُعرف النتيجة (الطرف الأيسر خطأ لعمليات \fIand\fP، أو صحيح لعمليات \fIor\fP)، وعند هذه النقطة ينتقل \fBfind\fP إلى اسم الملف التالي. إذا لم تُحدد أي نقطة بداية، يُفترض استخدام `.\&' (الدليل الحالي). .PP إذا كنت تستخدم \fBfind\fP في بيئة تهمك فيها الحماية (على سبيل المثال إذا كنت تستخدمه للبحث في أدلة يمكن للمستخدمين الآخرين الكتابة فيها)، فينبغي قراءة فصل `Security Considerations' في توثيق findutils، المسمى \fBFinding Files\fP والذي يأتي مع findutils. يتضمن ذلك المستند أيضًا تفاصيل ومناقشات أكثر بكثير من صفحة الدليل هذه، لذا قد تجده مصدرًا أكثر فائدة للمعلومات. . .SH الخيارات تتحكم الخيارات \fB\-H\fP و \fB\-L\fP و \fB\-P\fP في التعامل مع الروابط الرمزية. تُعتبر وسائط سطر الأوامر التي تلي هذه الخيارات أسماء لملفات أو أدلة للفحص، وصولاً إلى أول وسيط يبدأ بـ `\-'، أو الوسيط `(' أو `!'. يُعتبر ذلك الوسيط وأي وسائط تاليه له بمثابة التعبير الواصف لما سيُبحث عنه. إذا لم تُعطَ أي مسارات، يُستخدم الدليل الحالي. إذا لم يُعطَ أي تعبير، يُستخدم التعبير \fB\-print\fP (ولكن ربما ينبغي لك التفكير في استخدام \fB\-print0\fP بدلاً من ذلك، على أي حال). .PP تتحدث صفحة الدليل هذه عن `الخيارات' ضمن قائمة التعبيرات. تتحكم هذه الخيارات في سلوك \fBfind\fP ولكن تُحدد مباشرة بعد آخر اسم مسار. الخيارات الخمسة `الحقيقية' \fB\-H\fP، و \fB\-L\fP، و \fB\-P\fP، و \fB\-D\fP، و \fB\-O\fP يجب أن تظهر قبل أول اسم مسار، إن وُجدت. نظريًا، يمكن استخدام الشرطة المزدوجة \fB\-\-\fP للإشارة إلى أن أي وسائط متبقية ليست خيارات، لكن هذا لا يعمل حقًا بسبب الطريقة التي يحدد بها \fBfind\fP نهاية وسائط المسارات التالية: فهو يفعل ذلك عبر القراءة حتى يأتي وسيط تعبير (والذي يبدأ أيضًا بـ `\-'). الآن، إذا بدأ وسيط مسار بـ `\-'، سيعامله \fBfind\fP كوسيط تعبير بدلاً من ذلك. لذا، لضمان اعتبار جميع نقاط البداية كذلك، وخاصة لمنع معاملة أنماط البدل (wildcards) التي توسعها صدفة الاستدعاء كتعابير بالخطأ، فمن الأسلم عمومًا بادئة أنماط البدل أو أسماء المسارات المريبة بـ `./' أو استخدام مسارات مطلقة تبدأ بـ '/'. كبديل، من الآمن عمومًا (رغم أنه غير محمول) استخدام خيار GNU المسمى \fB\-files0\-from\fP لتمرير نقاط بداية عشوائية إلى \fBfind\fP. .IP \-P لا تتبع الروابط الرمزية أبدًا. هذا هو السلوك المبدئي. عندما يفحص \fBfind\fP أو يطبع معلومات عن الملفات، ويكون الملف رابطًا رمزيًا، تُؤخذ المعلومات المستخدمة من خصائص الرابط الرمزي نفسه. .IP \-L اتبع الروابط الرمزية. عندما يفحص \fBfind\fP أو يطبع معلومات عن الملفات، تُؤخذ المعلومات المستخدمة من خصائص الملف الذي يشير إليه الرابط، وليس من الرابط نفسه (ما لم يكن رابطًا رمزيًا معطوبًا أو تعذر على \fBfind\fP فحص الملف الذي يشير إليه الرابط). استخدام هذا الخيار يتضمن \fB\-noleaf\fP. إذا استخدمت لاحقًا الخيار \fB\-P\fP، سيبقى \fB\-noleaf\fP ساريًا. إذا كان \fB\-L\fP ساريًا واكتشف \fBfind\fP رابطًا رمزيًا لدليل فرعي أثناء بحثه، فسيُبحث في الدليل الفرعي الذي يشير إليه الرابط الرمزي. .IP عندما يكون الخيار \fB\-L\fP ساريًا، سيتطابق محمول (predicate) الـ \fB\-type\fP دائمًا مع نوع الملف الذي يشير إليه الرابط الرمزي بدلاً من الرابط نفسه (ما لم يكن الرابط الرمزي معطوبًا). الإجراءات التي قد تسبب عطب الروابط الرمزية أثناء تنفيذ \fBfind\fP (مثل \fB\-delete\fP) قد تؤدي إلى سلوك مربك. يؤدي استخدام \fB\-L\fP إلى جعل محمولات \fB\-lname\fP و \fB\-ilname\fP تعيد دائماً قيمة 'خطأ'. .IP \-H لا تتبع الروابط الرمزية، إلا أثناء معالجة وسائط سطر الأوامر. عندما يفحص \fBfind\fP أو يطبع معلومات عن الملفات، تُؤخذ المعلومات المستخدمة من خصائص الرابط الرمزي نفسه. الاستثناء الوحيد لهذا السلوك هو عندما يكون الملف المحدد في سطر الأوامر رابطًا رمزيًا، ويمكن حل الرابط. في تلك الحالة، تُؤخذ المعلومات المستخدمة مما يشير إليه الرابط (أي يُتبع الرابط). تُستخدم المعلومات الخاصة بالرابط نفسه كبديل إذا تعذر فحص الملف الذي يشير إليه الرابط الرمزي. إذا كان \fB\-H\fP ساريًا وكان أحد المسارات المحددة في سطر الأوامر رابطًا رمزيًا لدليل، فسيُفحص محتوى ذلك الدليل (على الرغم من أن \fB\-maxdepth\ 0\fP سيمنع ذلك بالطبع). .P إذا حُدد أكثر من خيار من \fB\-H\fP و \fB\-L\fP و \fB\-P\fP، فإن كل واحد منها يتجاوز الآخرين؛ ويسري مفعول الخيار الأخير ظهورًا في سطر الأوامر. وبما أنه المبدئي، فينبغي اعتبار الخيار \fB\-P\fP ساري المفعول ما لم يُحدد \fB\-H\fP أو \fB\-L\fP. يقوم GNU \fBfind\fP غالبًا بجلب حالة الملفات (stats) أثناء معالجة سطر الأوامر نفسه، قبل بدء أي بحث. تؤثر هذه الخيارات أيضًا على كيفية معالجة تلك الوسائط. تحديدًا، هناك عدد من الاختبارات التي تقارن الملفات المدرجة في سطر الأوامر بملف ندرسه حاليًا. في كل حالة، سيكون الملف المحدد في سطر الأوامر قد فُحص وحُفظت بعض خصائصه. إذا كان الملف المسمى رابطًا رمزيًا في الواقع، وكان الخيار \fB\-P\fP ساريًا (أو إذا لم يُحدد لا \fB\-H\fP ولا \fB\-L\fP)، فإن المعلومات المستخدمة للمقارنة ستُؤخذ من خصائص الرابط الرمزي. بخلاف ذلك، ستُؤخذ من خصائص الملف الذي يشير إليه الرابط. إذا تعذر على \fBfind\fP تتبع الرابط (على سبيل المثال بسبب عدم كفاية الامتيازات أو لأن الرابط يشير إلى ملف غير موجود) فستُستخدم خصائص الرابط نفسه. .P عندما تكون الخيارات \fB\-H\fP أو \fB\-L\fP سارية، سيُفك إسناد أي روابط رمزية مدرجة كوسيط لـ \fB\-newer\fP، وتُؤخذ الطابع الزمني من الملف الذي يشير إليه الرابط الرمزي. ينطبق الشيء نفسه على \fB\-newerXY\fP و \fB\-anewer\fP و \fB\-cnewer\fP. للخيار \fB\-follow\fP تأثير مشابه لـ \fB\-L\fP، رغم أنه يسري من النقطة التي يظهر فيها (أي أنه إذا لم يُستخدم \fB\-L\fP ولكن استخدم \fB\-follow\fP، فإن أي روابط رمزية تظهر بعد \fB\-follow\fP في سطر الأوامر سيُفك إسنادها، بينما لن يُفك إسناد الروابط التي قبله). .IP "\-D debugopts" اطبع معلومات تشخيصية؛ قد يكون هذا مفيدًا لتشخيص مشاكل عدم قيام \fBfind\fP بما تريده. يجب أن تكون قائمة خيارات التنقيح مفصولة بفواصل. لا يُضمن توافق خيارات التنقيح بين إصدارات findutils. للحصول على قائمة كاملة بخيارات التنقيح الصالحة، انظر مخرجات \fBfind \-D\ help\fP. تشمل خيارات التنقيح الصالحة ما يلي .RS .IP exec أظهر معلومات تشخيصية تتعلق بـ \-exec و \-execdir و \-ok و \-okdir .IP opt يطبع معلومات تشخيصية تتعلق بتحسين شجرة التعبير؛ انظر الخيار \-O. .IP rates يطبع ملخصًا يشير إلى عدد مرات نجاح أو فشل كل محمول (predicate). .IP search تنقل في شجرة الأدلة بإسهاب. .IP stat اطبع رسائل أثناء فحص الملفات باستخدام استدعاءات النظام \fBstat\fP و \fBlstat\fP. يحاول برنامج \fBfind\fP تقليل هذه الاستدعاءات قدر الإمكان. .IP tree أظهر شجرة التعبير بشكلها الأصلي والمحسن. .IP all فعل جميع خيارات التنقيح الأخرى (ما عدا \fBhelp\fP). .IP help اشرح خيارات التنقيح. .RE .IP \-Olevel يفعل تحسين الاستعلام. يعيد برنامج \fBfind\fP ترتيب الاختبارات لتسريع التنفيذ مع الحفاظ على التأثير العام؛ أي أن المحمولات ذات الآثار الجانبية لا يعاد ترتيبها بالنسبة لبعضها البعض. التحسينات التي نُفذت في كل مستوى تحسين هي كما يلي. .RS .IP 0 يعادل مستوى التحسين 1. .IP 1 هذا هو مستوى التحسين المبدئي ويوافق السلوك التقليدي. يعاد ترتيب التعبيرات بحيث تُجرى الاختبارات المعتمدة فقط على أسماء الملفات (على سبيل المثال \fB\-name\fP و \fB\-regex\fP) أولاً. .IP 2 تُجرى أي اختبارات \fB\-type\fP أو \fB\-xtype\fP بعد أي اختبارات معتمدة فقط على أسماء الملفات، ولكن قبل أي اختبارات تتطلب معلومات من الآينود (inode). في العديد من نسخ Unix الحديثة، تُعاد أنواع الملفات بواسطة \fBreaddir()\fP ولذا فإن هذه المحمولات أسرع في التقييم من المحمولات التي تحتاج إلى فحص حالة الملف (stat) أولاً. إذا استخدمت محمول \fB\-fstype\ \fP\fIFOO\fP وحددت نوع نظام ملفات \fIFOO\fP غير معروف (أي غير موجود في `/etc/mtab') وقت بدء \fBfind\fP، فإن ذلك المحمول يعادل \fB\-false\fP. .IP 3 في مستوى التحسين هذا، يُفعل محسن الاستعلام الكامل المعتمد على التكلفة. يتم تعديل ترتيب الاختبارات بحيث تُجرى الاختبارات الرخيصة (أي السريعة) أولاً، والأكثر تكلفة لاحقاً، إذا لزم الأمر. ضمن كل نطاق تكلفة، تُقيم المحمولات مبكراً أو متأخراً وفقاً لاحتمالية نجاحها من عدمه. بالنسبة لـ \fB\-o\fP، تُقيم المحمولات التي يرجح نجاحها مبكراً، وبالنسبة لـ \fB\-a\fP، تُقيم المحمولات التي يرجح فشلها مبكراً. .RE .IP لدى المحسن المعتمد على التكلفة فكرة ثابتة حول مدى احتمالية نجاح أي اختبار معطى. في بعض الحالات، تأخذ الاحتمالية في الاعتبار الطبيعة المحددة للاختبار (على سبيل المثال، يُفترض أن \fB\-type\ f\fP أكثر عرضة للنجاح من \fB\-type\ c\fP). يُقيم المحسن المعتمد على التكلفة حالياً. إذا لم يحسن أداء \fBfind\fP فعلياً، فسيُزال مرة أخرى. وعلى العكس من ذلك، فإن التحسينات التي تثبت موثوقيتها وقوتها وفعاليتها قد تُفعل في مستويات تحسين أقل بمرور الوقت. ومع ذلك، لن يُغير السلوك المبدئي (أي مستوى التحسين 1) في سلسلة إصدارات 4.3.x. تقوم مجموعة اختبارات findutils بتشغيل جميع الاختبارات على \fBfind\fP في كل مستوى تحسين وتضمن أن النتيجة هي نفسها. يمكن أن يؤدي إعادة ترتيب العمليات التي يقوم بها المحسن المعتمد على التكلفة إلى تغيير في السلوك المرئي للمستخدم. على سبيل المثال، المحمولات \fB\-readable\fP و \fB\-empty\fP حساسة لإعادة الترتيب. إذا شُغلت بترتيب \fB\-empty \-readable\fP، فستصدر رسالة خطأ للأدلة غير القابلة للقراءة. أما إذا شُغلت بترتيب \fB\-readable \-empty\fP فلن تصدر رسالة خطأ. هذا هو السبب في أن إعادة ترتيب العمليات هذه لا تُنفذ في مستوى التحسين المبدئي. . .SH تعبير جزء سطر الأوامر الذي يلي قائمة نقاط البداية هو الـ \fIexpression\fP (التعبير). هذا نوع من مواصفات الاستعلام التي تصف كيفية مطابقتنا للملفات وماذا نفعل بالملفات التي تمت مطابقتها. يتكون التعبير من تسلسل من الأشياء: .IP الاختبارات تعيد الاختبارات قيمة صواب أو خطأ، عادةً بناءً على خاصية معينة للملف الذي ندرسه. اختبار \fB\-empty\fP على سبيل المثال يكون صواباً فقط عندما يكون الملف الحالي فارغاً. .IP الإجراءات للإجراءات آثار جانبية (مثل طباعة شيء ما على المخرجات القياسية) وتعيد إما صواب أو خطأ، عادةً بناءً على نجاحها من عدمه. إجراء \fB\-print\fP على سبيل المثال يطبع اسم الملف الحالي على المخرجات القياسية. .IP "خيارات شاملة" تؤثر الخيارات الشاملة على عمل الاختبارات والإجراءات المحددة في أي جزء من سطر الأوامر. تعيد الخيارات الشاملة دائماً قيمة صواب. الخيار \fB\-depth\fP على سبيل المثال يجعل \fBfind\fP يعبر نظام الملفات بترتيب العمق أولاً. .IP "الخيارات الموضعية" تؤثر الخيارات الموضعية فقط على الاختبارات أو الإجراءات التي تليها. تعيد الخيارات الموضعية دائماً قيمة صواب. الخيار \fB\-regextype\fP على سبيل المثال هو خيار موضعي، يحدد لهجة التعبير النمطي للتعبيرات النمطية التي تظهر لاحقاً في سطر الأوامر. .IP المعاملات تربط المعاملات العناصر الأخرى داخل التعبير ببعضها. وهي تشمل على سبيل المثال \fB\-o\fP (بمعنى OR المنطقية) و \fB\-a\fP (بمعنى AND المنطقية). عند غياب المعامل، يُفترض وجود \fB\-a\fP. .P يُنفذ إجراء \fB\-print\fP على جميع الملفات التي يكون التعبير بأكمله صحيحاً لها، ما لم يتضمن التعبير إجراءً آخر غير \fB\-prune\fP أو \fB\-quit\fP. الإجراءات التي تمنع إجراء \fB\-print\fP المبدئي هي \fB\-delete\fP و \fB\-exec\fP و \fB\-execdir\fP و \fB\-ok\fP و \fB\-okdir\fP و \fB\-fls\fP و \fB\-fprint\fP و \fB\-fprintf\fP و \fB\-ls\fP و \fB\-print\fP و \fB\-printf\fP. يعمل إجراء \fB\-delete\fP أيضاً كخيار (بما أنه يتضمن \fB\-depth\fP). .SS "خيارات موضعية" تعيد الخيارات الموضعية دائماً قيمة صواب. وهي تؤثر فقط على الاختبارات التي تظهر لاحقاً في سطر الأوامر. .IP \-daystart يتم قياس الأوقات (لكل من \fB\-amin\fP و \fB\-atime\fP و \fB\-cmin\fP و \fB\-ctime\fP و \fB\-mmin\fP و \fB\-mtime\fP) من بداية اليوم الحالي بدلاً من الـ 24 ساعة الماضية. يؤثر هذا الخيار فقط على الاختبارات التي تظهر لاحقاً في سطر الأوامر. .IP \-follow مهجور؛ استخدم الخيار \fB\-L\fP بدلاً منه. فك إسناد الروابط الرمزية. يتضمن \fB\-noleaf\fP. يؤثر الخيار \fB\-follow\fP فقط على تلك الاختبارات التي تظهر بعده في سطر الأوامر. ما لم يُحدد الخيار \fB\-H\fP أو \fB\-L\fP، فإن موقع الخيار \fB\-follow\fP يغير سلوك محمول \fB\-newer\fP؛ حيث سيُفك إسناد أي ملفات مدرجة كوسيط لـ \fB\-newer\fP إذا كانت روابط رمزية. ينطبق الشيء نفسه على \fB\-newerXY\fP و \fB\-anewer\fP و \fB\-cnewer\fP. وبالمثل، سيتطابق محمول \fB\-type\fP دائماً مع نوع الملف الذي يشير إليه الرابط الرمزي بدلاً من الرابط نفسه. يؤدي استخدام \fB\-follow\fP إلى جعل محمولات \fB\-lname\fP و \fB\-ilname\fP تعيد دائماً قيمة 'خطأ'. .IP "\-regextype \fItype\fP" يغير بناء جملة التعبير النمطي الذي تفهمه اختبارات \fB\-regex\fP و \fB\-iregex\fP التي تظهر لاحقاً في سطر الأوامر. لرؤية أنواع التعبيرات النمطية المعروفة، استخدم \fB\-regextype\ help\fP. توثيق Texinfo (انظر \fBSEE\fP \fBALSO\fP) يشرح معنى والاختلافات بين أنواع التعبيرات النمطية المختلفة. إذا لم تستخدم هذا الخيار، سيتصرف find كما لو حُدد نوع التعبير النمطي \fBemacs\fP. .IP "\-warn، \-nowarn" شغل أو أوقف رسائل التحذير. تنطبق هذه التحذيرات فقط على استخدام سطر الأوامر، وليس على أي ظروف قد يواجهها \fBfind\fP عند البحث في الأدلة. يوافق السلوك المبدئي \fB\-warn\fP إذا كان المدخل القياسي هو tty، و \fB\-nowarn\fP بخلاف ذلك. إذا أُنتجت رسالة تحذير تتعلق باستخدام سطر الأوامر، فلن تتأثر حالة خروج \fBfind\fP. إذا عُين متغير البيئة \fBPOSIXLY_CORRECT\fP، واستُخدم \fB\-warn\fP أيضاً، فليس من المحدد أي تحذيرات ستكون نشطة، إن وُجدت. .SS "خيارات شاملة" تعيد الخيارات الشاملة دائماً قيمة صواب. تسري الخيارات الشاملة حتى على الاختبارات التي تظهر قبلها في سطر الأوامر. لمنع الارتباك، ينبغي تحديد الخيارات الشاملة في سطر الأوامر بعد قائمة نقاط البداية، وقبل أول اختبار أو خيار موضعي أو إجراء مباشرةً. إذا حددت خياراً شاملاً في مكان آخر، سيصدر \fBfind\fP رسالة تحذير توضح أن هذا قد يكون مربكاً. تظهر الخيارات الشاملة بعد قائمة نقاط البداية، ولذا فهي ليست من نفس نوع الخيار \fB\-L\fP، على سبيل المثال. .IP \-d مرادف لـ \-depth، للتوافق مع FreeBSD و NetBSD و MacOS X و OpenBSD. .IP \-depth عالج محتويات كل دليل قبل الدليل نفسه. إجراء \-delete يتضمن أيضاً \fB\-depth\fP. .IP "\-files0\-from \fIfile\fP" اقرأ نقاط البداية من \fIfile\fP بدلاً من الحصول عليها من سطر الأوامر. على النقيض من القيود المعروفة لتمرير نقاط البداية عبر وسائط سطر الأوامر، وهي تقييد عدد أسماء الملفات، والغموض المتأصل في تعارض أسماء الملفات مع أسماء الخيارات، يسمح استخدام هذا الخيار بتمرير عدد تعسفي من نقاط البداية إلى \fBfind\fP بأمان. استخدام هذا الخيار وتمرير نقاط البداية في سطر الأوامر أمران متنافيان، ولذلك غير مسموح بهما في نفس الوقت. وسيط \fIfile\fP إلزامي. يمكن استخدام \fB\-files0\-from\ \-\fP لقراءة قائمة نقاط البداية من تدفق \fIstandard input\fP (المدخل القياسي)، ومن أنبوب مثلاً. في هذه الحالة، لا يسمح بالإجراءات \fB\-ok\fP و \fB\-okdir\fP، لأنها ستتداخل بوضوح مع القراءة من \fIstandard input\fP للحصول على تأكيد المستخدم. يجب فصل نقاط البداية في \fIfile\fP بمحارف ASCII NUL. لا يسمح بوجود محرفي NUL متتاليين، أي نقطة بداية باسم ملف طوله صفر، وسوف يؤدي ذلك إلى تشخيص خطأ يليه رمز خروج غير صفري لاحقاً. في حال كان الـ \fIfile\fP المعطى فارغاً، لن يعالج \fBfind\fP أي نقطة بداية ولذلك سيخرج فوراً بعد تحليل وسائط البرنامج. هذا على عكس الاستدعاء القياسي حيث يفترض \fBfind\fP الدليل الحالي كنقطة بداية إذا لم يُمرر وسيط مسار. تتم معالجة نقاط البداية كالمعتاد، مثلاً سيقوم \fBfind\fP بالدخول العودي إلى الأدلة الفرعية ما لم يُمنع من ذلك. لمعالجة نقاط البداية فقط، يمكن تمرير \fB\-maxdepth\ 0\fP إضافياً. ملاحظات إضافية: إذا أُدرج ملف أكثر من مرة في ملف المدخلات، فمن غير المحدد ما إذا كان سيُزار أكثر من مرة. إذا تغير الـ \fIfile\fP أثناء تشغيل \fBfind\fP، فإن النتيجة غير محددة أيضاً. أخيراً، موضع البحث (seek) داخل الـ \fIfile\fP المسمى عند خروج \fBfind\fP، سواء كان بـ \fB\-quit\fP أو بأي طريقة أخرى، غير محدد أيضاً. المقصود بـ "غير محدد" هنا هو أنه قد يعمل أو لا يعمل أو قد يفعل أي شيء محدد، وأن السلوك قد يتغير من منصة إلى أخرى، أو من إصدار \fBfindutils\fP إلى آخر. .IP "\-help, \-\-help" اطبع ملخصاً لاستخدام سطر أوامر \fBfind\fP ثم اخرج. .IP \-ignore_readdir_race عادةً، سيصدر \fBfind\fP رسالة خطأ عندما يفشل في جلب حالة (stat) الملف. إذا أعطيت هذا الخيار وحُذف ملف بين الوقت الذي قرأ فيه \fBfind\fP اسم الملف من الدليل والوقت الذي حاول فيه جلب حالته، فلن تصدر رسالة خطأ. ينطبق هذا أيضاً على الملفات أو الأدلة التي تُعطى أسماؤها في سطر الأوامر. يسري هذا الخيار في وقت قراءة سطر الأوامر، مما يعني أنه لا يمكنك البحث في جزء من نظام الملفات مع تفعيل هذا الخيار وجزء آخر بدونه (إذا كنت بحاجة لفعل ذلك، فستحتاج لإصدار أمري \fBfind\fP بدلاً من ذلك، أحدهما بالخيار والآخر بدونه). علاوة على ذلك، سيتجاهل \fBfind\fP مع خيار \fB\-ignore_readdir_race\fP أخطاء إجراء \fB\-delete\fP في حال اختفاء الملف منذ قراءة الدليل الأب: لن يخرج تشخيص خطأ، وسيكون رمز العودة لإجراء \fB\-delete\fP هو صواب. .IP "\-maxdepth \fIlevels\fP" انزل بمقدار \fIlevels\fP (عدد صحيح غير سالب) من مستويات الأدلة كحد أقصى تحت نقاط البداية. استخدام \fB\-maxdepth\ 0\fP يعني تطبيق الاختبارات والإجراءات على نقاط البداية نفسها فقط. .IP "\-mindepth \fIlevels\fP" لا تطبق أي اختبارات أو إجراءات في مستويات أقل من \fIlevels\fP (عدد صحيح غير سالب). استخدام \fB\-mindepth\ 1\fP يعني معالجة جميع الملفات باستثناء نقاط البداية. .IP \-mount لا تنزل في أدلة موجودة على أنظمة ملفات أخرى. اسم بديل لـ \fB\-xdev\fP، للتوافق مع بعض الإصدارات الأخرى من \fBfind\fP. .IP \-noignore_readdir_race يوقف تأثير \fB\-ignore_readdir_race\fP. .IP \-noleaf لا تقم بالتحسين بافتراض أن الأدلة تحتوي على أدلة فرعية أقل بـ 2 من عدد روابطها الصلبة. هذا الخيار مطلوب عند البحث في أنظمة الملفات التي لا تتبع اتفاقية Unix لروابط الأدلة، مثل أنظمة ملفات CD\-ROM أو MS\-DOS أو نقاط وصل مجلدات AFS. كل دليل في نظام ملفات Unix عادي له على الأقل رابطان صلبان: اسمه ومدخله `.\&'. بالإضافة إلى ذلك، فإن أدلته الفرعية (إن وجدت) لكل منها مدخل `..\&' مرتبط بهذا الدليل. عندما يفحص \fBfind\fP دليلاً، وبعد أن يجلب حالة (stat) أدلة فرعية أقل بـ 2 من عدد روابط الدليل، فإنه يعلم أن بقية المداخل في الدليل هي ليست أدلة (ملفات 'ورقية' leaf في شجرة الأدلة). إذا كان المطلوب فقط فحص أسماء الملفات، فلا حاجة لجلب حالتها؛ وهذا يعطي زيادة ملحوظة في سرعة البحث. .IP "\-version, \-\-version" اطبع رقم إصدار \fBfind\fP ثم اخرج. .IP \-xdev لا تنزل في أدلة موجودة على أنظمة ملفات أخرى. .SS الاختبارات تسمح بعض الاختبارات، على سبيل المثال \fB\-newerXY\fP و \fB\-samefile\fP، بالمقارنة بين الملف الذي يُفحص حالياً وبعض الملفات المرجعية المحددة في سطر الأوامر. عند استخدام هذه الاختبارات، يتحدد تفسير الملف المرجعي بواسطة الخيارات \fB\-H\fP و \fB\-L\fP و \fB\-P\fP وأي خيار \fB\-follow\fP سابق، ولكن يُفحص الملف المرجعي مرة واحدة فقط، في الوقت الذي يُحلل فيه سطر الأوامر. إذا تعذر فحص الملف المرجعي (على سبيل المثال، فشل استدعاء نظام \fBstat\fP(2) له)، فستصدر رسالة خطأ، ويخرج \fBfind\fP بحالة غير صفرية. .P يمكن تحديد وسيط عددي \fIn\fP للاختبارات (مثل \fB\-amin\fP و \fB\-mtime\fP و \fB\-gid\fP و \fB\-inum\fP و \fB\-links\fP و \fB\-size\fP و \fB\-uid\fP و \fB\-used\fP) كـ .IP \fI+n\fP لقيم أكبر من \fIn\fP، .IP \fI\-n\fP لقيم أقل من \fIn\fP، .IP \fIn\fP لقيمة تساوي \fIn\fP تمامًا. . .P الاختبارات المدعومة: .IP "\-amin \fIn\fP" وُصل إلى الملف لآخر مرة منذ أقل من، أو أكثر من، أو منذ \fIn\fP دقيقة تمامًا. .IP "\-anewer \fIالمرجع\fP" وقت آخر وصول للملف الحالي أحدث من وقت آخر تعديل لبيانات ملف \fIالمرجع\fP. إذا كان \fIالمرجع\fP وصلة رمزية وكان الخيار \fB\-H\fP أو الخيار \fB\-L\fP مفعلًا، فسيُستخدم دائمًا وقت آخر تعديل لبيانات الملف الذي تشير إليه الوصلة. .IP "\-atime \fIn\fP" وُصل إلى الملف لآخر مرة منذ أقل من، أو أكثر من، أو منذ \fIn\fP*24 ساعة تمامًا. عندما يحسب \fBfind\fP عدد الفترات (مضاعفات 24 ساعة) منذ آخر وصول للملف، فإنه يتجاهل أي أجزاء كسرية، لذا لمطابقة \fB\-atime\ +1\fP، يجب أن يكون الملف قد وُصل إليه منذ يومين على الأقل. .IP "\-cmin \fIn\fP" تغيرت حالة الملف لآخر مرة منذ أقل من، أو أكثر من، أو منذ \fIn\fP دقيقة تمامًا. .IP "\-cnewer \fIالمرجع\fP" وقت آخر تغيير لحالة الملف الحالي أحدث من وقت آخر تعديل لبيانات ملف \fIالمرجع\fP. إذا كان \fIالمرجع\fP وصلة رمزية وكان الخيار \fB\-H\fP أو الخيار \fB\-L\fP مفعلًا، فسيُستخدم دائمًا وقت آخر تعديل لبيانات الملف الذي تشير إليه الوصلة. .IP "\-ctime \fIn\fP" تغيرت حالة الملف لآخر مرة منذ أقل من، أو أكثر من، أو منذ \fIn\fP*24 ساعة تمامًا. انظر الملاحظات حول \fB\-atime\fP لفهم كيفية تأثير التقريب على تفسير أوقات تغيير حالة الملف. .IP \-empty الملف فارغ، وهو إما ملف عادي أو دليل. .IP \-executable يطابق الملفات القابلة للتنفيذ والأدلة القابلة للبحث (بمعنى دقة اسم الملف) بواسطة المستخدم الحالي. يأخذ هذا في الاعتبار قوائم التحكم في الوصول (ACLs) وغيرها من عناصر الصلاحيات التي يتجاهلها اختبار \fB\-perm\fP. يستخدم هذا الاختبار استدعاء النظام \fBaccess\fP(2)، ولذا يمكن خداعه بواسطة خوادم NFS التي تنفذ تعيين معرف المستخدم (UID mapping) أو (root\-squashing)، لأن العديد من الأنظمة تنفذ \fBaccess\fP(2) في نواة العميل وبالتالي لا يمكنها استخدام معلومات تعيين UID الموجودة على الخادم. ولأن هذا الاختبار يعتمد فقط على نتيجة استدعاء النظام \fBaccess\fP(2)، فلا يوجد ضمان بأن الملف الذي ينجح في هذا الاختبار يمكن تنفيذه فعليًا. .IP \-false دائمًا خطأ (false). .IP "\-fstype \fIالنوع\fP" الملف موجود على نظام ملفات من نوع \fIالنوع\fP. تختلف أنواع أنظمة الملفات الصالحة باختلاف إصدارات Unix؛ القائمة التالية غير كاملة لأنواع أنظمة الملفات المقبولة في بعض إصدارات Unix: ufs، 4.2، 4.3، nfs، tmp، mfs، S51K، S52K. يمكنك استخدام \fB\-printf\fP مع التوجيه %F لرؤية أنواع أنظمة الملفات لديك. .IP "\-gid \fIn\fP" معرف المجموعة الرقمي (GID) للملف أقل من، أو أكثر من، أو يساوي \fIn\fP تمامًا. .IP "\-group \fIاسم_المجموعة\fP" الملف ينتمي للمجموعة \fIاسم_المجموعة\fP (يُسمح بمعرف المجموعة الرقمي). .IP "\-ilname \fIالنمط\fP" مثل \fB\-lname\fP، ولكن المطابقة غير حساسة لحالة الأحرف. إذا كان الخيار \fB\-L\fP أو الخيار \fB\-follow\fP مفعلًا، فإن هذا الاختبار يعيد نتيجة خطأ إلا إذا كانت الوصلة الرمزية معطوبة. .IP "\-iname \fIالنمط\fP" مثل \fB\-name\fP، ولكن المطابقة غير حساسة لحالة الأحرف. على سبيل المثال، الأنماط `fo*` و `F??` تطابق أسماء الملفات `Foo` و `FOO` و `foo` و `fOo` وغيرها. النمط `*foo*` سيطابق أيضًا ملفًا يسمى '.foobar'. .IP "\-inum \fIn\fP" الملف له رقم فهرس (inode) أصغر من، أو أكبر من، أو يساوي \fIn\fP تمامًا. عادةً ما يكون استخدام اختبار \fB\-samefile\fP أسهل. .IP "\-ipath \fIالنمط\fP" مثل \fB\-path\fP، ولكن المطابقة غير حساسة لحالة الأحرف. .IP "\-iregex \fIالنمط\fP" مثل \fB\-regex\fP، ولكن المطابقة غير حساسة لحالة الأحرف. .IP "\-iwholename \fIالنمط\fP" انظر \-ipath. هذا البديل أقل قابلية للنقل من \fB\-ipath\fP. .IP "\-links \fIn\fP" للملف أقل من، أو أكثر من، أو \fIn\fP من الوصلات الصلبة تمامًا. .IP "\-lname \fIالنمط\fP" الملف عبارة عن وصلة رمزية تطابق محتوياتها نمط الصدفة \fIالنمط\fP. لا تعامل المحارف الوصفية (metacharacters) الرموز `/` أو `.\&` معاملة خاصة. إذا كان الخيار \fB\-L\fP أو الخيار \fB\-follow\fP مفعلًا، فإن هذا الاختبار يعيد نتيجة خطأ إلا إذا كانت الوصلة الرمزية معطوبة. .IP "\-mmin \fIn\fP" عُدلت بيانات الملف لآخر مرة منذ أقل من، أو أكثر من، أو منذ \fIn\fP دقيقة تمامًا. .IP "\-mtime \fIn\fP" عُدلت بيانات الملف لآخر مرة منذ أقل من، أو أكثر من، أو منذ \fIn\fP*24 ساعة تمامًا. انظر الملاحظات حول \fB\-atime\fP لفهم كيفية تأثير التقريب على تفسير أوقات تعديل الملف. .IP "\-name \fIالنمط\fP" الاسم الأساسي للملف (المسار بعد حذف الأدلة البادئة) يطابق نمط الصدفة \fIالنمط\fP. ولأن الأدلة البادئة لأسماء الملفات تُحذف، يجب ألا يتضمن \fIالنمط\fP مائلة (slash)، لأن `\-name a/b` لن يطابق أي شيء أبدًا (وربما ترغب في استخدام \fB\-path\fP بدلاً من ذلك). الاستثناء من ذلك هو استخدام مائلة واحدة فقط كنمط (`\-name /`)، لأن هذه سلسلة نصية صالحة لمطابقة الدليل الجذر "/" (لأن الاسم الأساسي لـ "/" هو "/"). سيصدر تحذير إذا حاولت تمرير نمط يحتوي على مائلة \- لا يتكون منها وحدها \- ما لم يُضبط متغير البيئة \fBPOSIXLY_CORRECT\fP أو يُستخدم الخيار \fB\-nowarn\fP. لتجاهل دليل والملفات التي تحته، استخدم \fB\-prune\fP بدلاً من فحص كل ملف في الشجرة؛ انظر مثالاً في وصف هذا الإجراء. لا يتم التعرف على الأقواس المعقوفة كرموز خاصة، على الرغم من أن بعض الصدفات ومنها Bash تمنح الأقواس المعقوفة معنى خاصًا في أنماط الصدفة. تُجرى مطابقة اسم الملف باستخدام دالة المكتبة \fBfnmatch\fP(3). لا تنسَ إحاطة النمط بعلامات اقتباس لحمايته من التوسع بواسطة الصدفة. .IP "\-newer \fIالمرجع\fP" وقت آخر تعديل لبيانات الملف الحالي أحدث من وقت آخر تعديل لبيانات ملف \fIالمرجع\fP. إذا كان \fIالمرجع\fP وصلة رمزية وكان الخيار \fB\-H\fP أو الخيار \fB\-L\fP مفعلًا، فسيُستخدم دائمًا وقت آخر تعديل لبيانات الملف الذي تشير إليه الوصلة. .IP "\-newerXY \fIالمرجع\fP" ينجح إذا كان الطابع الزمني \fIX\fP للملف الذي يُفحص أحدث من الطابع الزمني \fIY\fP لملف \fIالمرجع\fP. يمكن أن يكون الحرفان \fIX\fP و \fIY\fP أيًا من الأحرف التالية: .TS ll ll ll ll llw(2i). a وقت الوصول لملف \fIالمرجع\fP B وقت إنشاء ملف \fIالمرجع\fP c وقت تغيير حالة الفهرس (inode) لملف \fIالمرجع\fP m وقت تعديل ملف \fIالمرجع\fP t يُفسر \fIالمرجع\fP مباشرةً على أنه وقت .TE بعض التجميعات غير صالحة؛ على سبيل المثال، لا يصح أن يكون \fIX\fP هو \fIt\fP. بعض التجميعات غير مطبقة في جميع الأنظمة؛ على سبيل المثال \fIB\fP غير مدعوم في كل الأنظمة. إذا حُددت تجميعة غير صالحة أو غير مدعومة لـ \fIXY\fP، فستنتج عن ذلك خطأ فادح. تُفسر مواصفات الوقت كما هو الحال في المعامل الخاص بالخيار \fB\-d\fP للأمر \fBdate\fP من GNU. إذا حاولت استخدام وقت إنشاء ملف مرجعي، ولم يمكن تحديد هذا الوقت، فستنتج رسالة خطأ فادح. إذا حددت اختبارًا يشير إلى وقت إنشاء الملفات التي تُفحص، فسيفشل هذا الاختبار مع أي ملف يكون وقت إنشائه مجهولاً. .IP \-nogroup لا توجد مجموعة تقابل معرف المجموعة الرقمي (GID) للملف. .IP \-nouser لا يوجد مستخدم يقابل معرف المستخدم الرقمي (UID) للملف. .IP "\-path \fIالنمط\fP" اسم الملف يطابق نمط الصدفة \fIالنمط\fP. لا تعامل المحارف الوصفية الرموز `/` أو `.\&` معاملة خاصة؛ فمثلاً، .in +4m .nf find . \-path "./sr*sc" .fi .in سيطبع مدخلاً لدليل يسمى \fI./src/misc\fP (إذا كان موجودًا). لتجاهل شجرة دليل كاملة، استخدم \fB\-prune\fP بدلاً من فحص كل ملف في الشجرة. لاحظ أن اختبار مطابقة النمط ينطبق على اسم الملف بالكامل، بدءًا من إحدى نقاط البداية المذكورة في سطر الأوامر. ولن يكون لاستخدام مسار مطلق معنى هنا إلا إذا كانت نقطة البداية ذات الصلة مسارًا مطلقًا أيضًا. هذا يعني أن هذا الأمر لن يطابق أي شيء أبدًا: .br .in +4m .nf find bar \-path /foo/bar/myfile \-print .fi .in يقارن Find المعطى \fB\-path\fP مع ناتج دمج اسم الدليل والاسم الأساسي للملف الذي يفحصه. وبما أن ناتج الدمج لن ينتهي أبدًا بمائلة، فإن المعطيات \fB\-path\fP التي تنتهي بمائلة لن تطابق شيئًا (باستثناء ربما نقطة بداية محددة في سطر الأوامر). المسند \fB\-path\fP مدعوم أيضًا بواسطة \fBfind\fP في نظام HP\-UX وهو جزء من معيار POSIX 2008. .IP "\-perm \fIالوضع\fP" بِتّات صلاحية الملف تطابق \fIالوضع\fP تمامًا (سواء كان ثمانيًا أو رمزيًا). وبما أن المطابقة التامة مطلوبة، فإذا كنت تريد استخدام هذا النموذج للأوضاع الرمزية، فقد تضطر إلى تحديد سلسلة وضع معقدة نوعًا ما. على سبيل المثال، `\-perm g=w` سيطابق فقط الملفات التي وضعها 0020 (أي الملفات التي تكون فيها صلاحية كتابة المجموعة هي الصلاحية الوحيدة المحددة). من المرجح أنك سترغب في استخدام الصيغتين `/` أو `\-` ، مثلًا `\-perm \-g=w` الذي يطابق أي ملف لديه صلاحية كتابة المجموعة. راجع قسم \fBأمثلة\fP لمزيد من الأمثلة التوضيحية. .IP "\-perm \-\fIالوضع\fP" كل بِتّات الصلاحية في \fIالوضع\fP محددة للملف. الأوضاع الرمزية مقبولة في هذه الصيغة، وعادةً ما تكون هذه هي الطريقة التي ترغب في استخدامها بها. يجب تحديد `u` أو `g` أو `o` إذا كنت تستخدم وضعًا رمزيًا. راجع قسم \fBأمثلة\fP لمزيد من الأمثلة التوضيحية. .IP "\-perm /\fIالوضع\fP" أيّ من بِتّات الصلاحية في \fIالوضع\fP محددة للملف. الأوضاع الرمزية مقبولة في هذه الصيغة. يجب تحديد `u` أو `g` أو `o` إذا كنت تستخدم وضعًا رمزيًا. راجع قسم \fBأمثلة\fP لمزيد من الأمثلة التوضيحية. إذا لم تُحدد أي بِتّات صلاحية في \fIالوضع\fP، فإن هذا الاختبار يطابق أي ملف (الفكرة هنا هي الاتساق مع سلوك \fB\-perm\ \-000\fP). .IP "\-perm +\fIالوضع\fP" هذا لم يعد مدعومًا (وهو مهجور منذ عام 2005). استخدم \fB\-perm /\fP\fIالوضع\fP بدلاً منه. .IP \-readable يطابق الملفات القابلة للقراءة من قِبل المستخدم الحالي. يأخذ هذا في الاعتبار قوائم التحكم في الوصول وعناصر الصلاحيات الأخرى التي يتجاهلها اختبار \fB\-perm\fP. يستخدم هذا الاختبار استدعاء النظام \fBaccess\fP(2)، ولذا يمكن خداعه بواسطة خوادم NFS التي تنفذ تعيين UID (أو root\-squashing)، بما أن العديد من الأنظمة تنفذ \fBaccess\fP(2) في نواة العميل وبالتالي لا يمكنها استخدام معلومات تعيين UID الموجودة على الخادم. .IP "\-regex \fIالنمط\fP" اسم الملف يطابق التعبير النمطي \fIالنمط\fP. هذه مطابقة للمسار بالكامل، وليست عملية بحث. على سبيل المثال، لمطابقة ملف يسمى \fI./fubar3,\fP يمكنك استخدام التعبير النمطي `.*bar.\&` أو `.*b.*3` ، ولكن ليس `f.*r3`. التعبيرات النمطية التي يفهمها \fBfind\fP هي تعبيرات Emacs النمطية مبدئيًا، ولكن يمكن تغيير ذلك باستخدام الخيار \fB\-regextype\fP. .IP "\-samefile \fIالاسم\fP" يشير الملف إلى نفس الفهرس (inode) الذي يشير إليه \fIالاسم\fP. عندما يكون الخيار \fB\-L\fP مفعلًا، يمكن أن يشمل ذلك الوصلات الرمزية. .IP "\-size \fIn\fP[cwbkMG]" يستخدم الملف مساحة أقل من، أو أكثر من، أو \fIn\fP وحدة مساحة تمامًا، مع التقريب لأعلى. يمكن استخدام اللاحقات التالية: .RS .IP `b' للكتل ذات 512 بايت (هذا هو المبدئي في حال لم تُستخدم لاحقة) .IP `c' للبايتات .IP `w' للكلمات ذات البايتين .IP `k' للكيبي بايت (KiB، وحدات من 1024 بايت) .IP `M' للميبي بايت (MiB، وحدات من 1024 * 1024 = 1\|048\|576 بايت) .IP `G' للغيبي بايت (GiB، وحدات من 1024 * 1024 * 1024 = 1\|073\|741\|824 بايت) .RE .IP الحجم هو ببساطة العضو st_size في بنية stat التي يملؤها استدعاء النظام lstat (أو stat)، مقربًا لأعلى كما هو موضح أعلاه. بعبارة أخرى، هو متسق مع النتيجة التي تحصل عليها من \fBls\ \-l\fP. ضع في اعتبارك أن محددات التنسيق `%k` و `%b` لـ \fB\-printf\fP تتعامل مع الملفات المتناثرة (sparse files) بشكل مختلف. اللاحقة `b` تشير دائمًا إلى كتل ذات 512 بايت ولا تشير أبدًا إلى كتل ذات 1024 بايت، وهو ما يختلف عن سلوك \fB\-ls\fP. .IP البادئتان + و \- تعنيان أكبر من وأقل من، كالمعتاد؛ أي أن الحجم الذي يساوي \fIn\fP وحدة تمامًا لا يطابق. تذكر أن الحجم يُقرب لأعلى إلى الوحدة التالية. ولذلك فإن \fB\-size\ \-1M\fP لا يعادل \fB\-size\ \-1\|048\|576c\fP. الأول يطابق الملفات الفارغة فقط، بينما يطابق الثاني الملفات التي يتراوح حجمها من 0 إلى 1,048,575 بايت. .IP \-true صحيح (true) دائمًا. .IP "\-type \fIc\fP" الملف من نوع \fIc\fP: .RS .IP b خاص كتلي (مخزن مؤقتًا) .IP c خاص محرفي (غير مخزن مؤقتًا) .IP d دليل .IP p أنبوب مسمى (FIFO) .IP f ملف عادي .IP l وصلة رمزية؛ لا يتحقق هذا أبداً إذا كان الخيار \fB\-L\fP أو الخيار \fB\-follow\fP مفعلاً، إلا إذا كانت الوصلة الرمزية معطوبة. إذا أردت البحث عن وصلات رمزية عندما يكون \fB\-L\fP مفعلاً، فاستخدم \fB\-xtype\fP. .IP s socket .IP D باب (سولاريس) .RE .IP للبحث عن أكثر من نوع في وقت واحد، يمكنك توفير قائمة مجمعة من أحرف الأنواع مفصولة بفاصلة `,' (امتداد جنو). .IP "\-uid \fIn\fP" معرف المستخدم الرقمي للملف أقل من، أو أكثر من، أو يساوي \fIn\fP تماماً. .IP "\-used \fIn\fP" آخر وصول للملف كان قبل أقل من، أو أكثر من، أو خلال \fIn\fP يوماً تماماً بعد آخر تغيير في حالته. .IP "\-user \fIuname\fP" الملف مملوك للمستخدم \fIuname\fP (يُسمح بمعرف المستخدم الرقمي). .IP "\-wholename \fIpattern\fP" انظر \-path. هذا البديل أقل قابلية للنقل من \fB\-path\fP. .IP \-writable يطابق الملفات القابلة للكتابة بواسطة المستخدم الحالي. يأخذ هذا في الحسبان قوائم التحكم في الوصول وعناصر الأذونات الأخرى التي يتجاهلها اختبار \fB\-perm\fP. يستخدم هذا الاختبار استدعاء النظام \fBaccess\fP(2)، ولذا يمكن خداعه بواسطة خوادم NFS التي تقوم برسم خرائط UID (أو root\-squashing)، بما أن العديد من الأنظمة تنفذ \fBaccess\fP(2) في نواة العميل وبالتالي لا يمكنها الاستفادة من معلومات رسم خرائط UID الموجودة على الخادم. .IP "\-xtype \fIc\fP" نفس خيار \fB\-type\fP ما لم يكن الملف وصلة رمزية. بالنسبة للوصلات الرمزية: إذا حُدد الخيار \fB\-H\fP أو \fB\-P\fP، يكون صحيحاً إذا كان الملف وصلاً لملف من النوع \fIc\fP؛ وإذا أُعطي الخيار \fB\-L\fP، يكون صحيحاً إذا كان \fIc\fP هو `l'. وبتعبير آخر، بالنسبة للوصلات الرمزية، يفحص \fB\-xtype\fP نوع الملف الذي لا يفحصه \fB\-type\fP. إذا كانت الوصلة الرمزية معطوبة (لأن الشيء الذي تشير إليه غير موجود أو الوصلة تشير إلى نفسها) فعندئذ سيتصرف \fB\-xtype\fP بنفس طريقة \fB\-type\fP. .IP "\-context \fIنمط\fP" (لـ SELinux فقط) سياق أمن الملف يطابق \fIنمط\fP glob. .SS الإجراءات .IP \-delete يحذف الملفات أو الأدلة؛ وتكون النتيجة «صحيح» إذا نجح الحذف. إذا فشل الحذف، تُصدر رسالة خطأ وستكون حالة خروج \fBfind\fP غير صفرية (عند خروجه في النهاية). \fBتحذير\fP: لا تنسَ أن \fBfind\fP يقيم سطر الأوامر كتعبير، لذا فإن وضع \fB\-delete\fP أولًا سيجعل \fBfind\fP يحاول حذف كل شيء تحت نقاط البداية التي حددتها. يؤدي استخدام الإجراء \fB\-delete\fP في سطر الأوامر إلى تفعيل الخيار \fB\-depth\fP آليًا. وبما أن \fB\-depth\fP بدوره يجعل \fB\-prune\fP غير فعال، فلا يمكن الجمع بين الإجراء \fB\-delete\fP و \fB\-prune\fP بشكل مفيد. غالبًا ما يرغب المستخدم في اختبار سطر أوامر \fBfind\fP باستخدام \fB\-print\fP قبل إضافة \fB\-delete\fP لعملية الحذف الفعلية. لتجنب النتائج المفاجئة، يفضل عادةً تذكر استخدام \fB\-depth\fP صراحةً خلال عمليات الاختبار الأولية تلك. سيفشل الإجراء \fB\-delete\fP في إزالة الدليل ما لم يكن فارغًا. عند استخدامه مع الخيار \fB\-ignore_readdir_race\fP، سيتجاهل \fBfind\fP أخطاء الإجراء \fB\-delete\fP في حالة اختفاء الملف منذ قراءة الدليل الأب: ولن يخرج تشخيص خطأ، ولن يغير رمز الخروج إلى غير صفري، وسيكون رمز إرجاع الإجراء \fB\-delete\fP «صحيح». .IP "\-exec \fIأمر\fP ;" ينفذ \fIأمر\fP؛ وتكون النتيجة «صحيح» إذا أُرجع الحالة 0. تُؤخذ جميع المعاملات التالية لـ \fBfind\fP كمعاملات للأمر حتى تُواجه معاملًا يتكون من «;». تُستبدل السلسلة «{}» باسم الملف الحالي الذي يُعالج في كل مكان تظهر فيه ضمن معاملات الأمر، وليس فقط في المعاملات التي تكون فيها وحدها، كما في بعض إصدارات \fBfind\fP. قد يحتاج كلا التركيبين إلى الهروب (باستخدام «\e») أو الاقتباس لحمايتهما من التوسع بواسطة الصدفة. راجع قسم \fBأمثلة\fP للحصول على أمثلة لاستخدام الخيار \fB\-exec\fP. يُشغل الأمر المحدد مرة واحدة لكل ملف مطابق. يُنفذ الأمر في دليل البداية. توجد مشاكل أمنية لا يمكن تجنبها تحيط باستخدام الإجراء \fB\-exec\fP؛ يجب استخدام الخيار \fB\-execdir\fP بدلًا منه. .IP "\-exec \fIأمر\fP {} +" هذا البديل من الإجراء \fB\-exec\fP يُشغل الأمر المحدد على الملفات المختارة، ولكن يُبنى سطر الأوامر عن طريق إلحاق اسم كل ملف مختار في النهاية؛ وسيكون إجمالي عدد استدعاءات الأمر أقل بكثير من عدد الملفات المطابقة. يُبنى سطر الأوامر بنفس الطريقة التي يبني بها \fBxargs\fP خطوط أوامره. يُسمح بنسخة واحدة فقط من «{}» داخل الأمر، ويجب أن تظهر في النهاية، مباشرة قبل «+»؛ وتحتاج إلى الهروب (بواسطة «\e») أو الاقتباس لحمايتها من التفسير بواسطة الصدفة. يُنفذ الأمر في دليل البداية. إذا أرجع أي استدعاء بصيغة «+» قيمة غير صفرية كحالة خروج، فإن \fBfind\fP يرجع حالة خروج غير صفرية. إذا واجه \fBfind\fP خطأً، فقد يتسبب ذلك أحيانًا في خروج فوري، لذا قد لا تُشغل بعض الأوامر المعلقة على الإطلاق. لهذا السبب، فإن \fB\-exec\ \fP\fImy\-command\fP\fB\ ...\ {}\ +\ \-quit\fP قد لا يؤدي إلى تشغيل \fImy\-command\fP فعليًا. هذا البديل من \fB\-exec\fP يرجع دائمًا «صحيح». .IP "\-execdir \fIأمر\fP ;" .IP "\-execdir \fIأمر\fP {} +" مثل \fB\-exec\fP، ولكن يُشغل الأمر المحدد من الدليل الفرعي الذي يحتوي على الملف المطابق، والذي ليس هو الدليل الذي بدأت منه \fBfind\fP عادةً. كما هو الحال مع \-exec، يجب اقتباس {} إذا استدعي find من صدفة. هذه طريقة أكثر أمانًا لاستدعاء الأوامر، لأنها تتجنب ظروف السباق أثناء تحليل المسارات إلى الملفات المطابقة. كما هو الحال مع الإجراء \fB\-exec\fP، فإن صيغة «+» لـ \fB\-execdir\fP ستبني سطر أوامر لمعالجة أكثر من ملف مطابق، ولكن أي استدعاء معين لـ \fIأمر\fP سيسرد فقط الملفات الموجودة في نفس الدليل الفرعي. إذا استخدمت هذا الخيار، فيجب التأكد من أن متغير البيئة \fBPATH\fP لا يشير إلى «.»؛ وإلا، يمكن للمهاجم تشغيل أي أوامر يريدها عن طريق ترك ملف مسمى بشكل مناسب في دليل ستشغل فيه \fB\-execdir\fP. وينطبق الشيء نفسه على وجود إدخالات في \fBPATH\fP فارغة أو ليست أسماء أدلة مطلقة. إذا أرجع أي استدعاء بصيغة «+» قيمة غير صفرية كحالة خروج، فإن \fBfind\fP يرجع حالة خروج غير صفرية. إذا واجه \fBfind\fP خطأً، فقد يتسبب هذا أحيانًا في خروج فوري، لذا قد لا تُشغل بعض الأوامر المعلقة على الإطلاق. تعتمد نتيجة الإجراء على ما إذا كان البديل المستخدم هو \fB+\fP أو \fB;\fP؛ يرجع \fB\-execdir\ \fP\fIأمر\fP\fB\ {}\ +\fP دائمًا «صحيح»، بينما يرجع \fB\-execdir\ \fP\fIأمر\fP\fB\ {}\ ;\fP «صحيح» فقط إذا أرجع \fIأمر\fP القيمة 0. .IP "\-fls \fIملف\fP" صحيح؛ مثل \fB\-ls\fP ولكن يكتب إلى \fIملف\fP مثل \fB\-fprint\fP. يُنشأ ملف المخرجات دائمًا، حتى لو لم يطابق المسند أبدًا. راجع قسم \fBأسماء الملفات غير العادية\fP للحصول على معلومات حول كيفية التعامل مع المحارف غير العادية في أسماء الملفات. .IP "\-fprint \fIملف\fP" صحيح؛ يطبع اسم الملف الكامل في الملف \fIملف\fP. إذا لم يكن \fIملف\fP موجودًا عند تشغيل \fBfind\fP، فسيُنشأ؛ وإذا كان موجودًا، فسيُبتر. تُعامل أسماء الملفات \fI/dev/stdout\fP و \fI/dev/stderr\fP بشكل خاص؛ حيث تشير إلى المخرجات القياسية ومخرجات الخطأ القياسية، على التوالي. يُنشأ ملف المخرجات دائمًا، حتى لو لم يطابق المسند أبدًا. راجع قسم \fBأسماء الملفات غير العادية\fP للحصول على معلومات حول كيفية التعامل مع المحارف غير العادية في أسماء الملفات. .IP "\-fprint0 \fIملف\fP" صحيح؛ مثل \fB\-print0\fP ولكن يكتب إلى \fIملف\fP مثل \fB\-fprint\fP. يُنشأ ملف المخرجات دائمًا، حتى لو لم يطابق المسند أبدًا. راجع قسم \fBأسماء الملفات غير العادية\fP للحصول على معلومات حول كيفية التعامل مع المحارف غير العادية في أسماء الملفات. .IP "\-fprintf \fIملف\fP \fIتنسيق\fP" صحيح؛ مثل \fB\-printf\fP ولكن يكتب إلى \fIملف\fP مثل \fB\-fprint\fP. يُنشأ ملف المخرجات دائمًا، حتى لو لم يطابق المسند أبدًا. راجع قسم \fBأسماء الملفات غير العادية\fP للحصول على معلومات حول كيفية التعامل مع المحارف غير العادية في أسماء الملفات. .IP \-ls صحيح؛ يسرد الملف الحالي بتنسيق \fBls \-dils\fP على المخرجات القياسية. عدد الكتل هو لكتل بحجم 1 ك.بايت، ما لم يُضبط متغير البيئة \fBPOSIXLY_CORRECT\fP، وفي هذه الحالة تُستخدم كتل بحجم 512 بايت. راجع قسم \fBأسماء الملفات غير العادية\fP للحصول على معلومات حول كيفية التعامل مع المحارف غير العادية في أسماء الملفات. .IP "\-ok \fIأمر\fP ;" مثل \fB\-exec\fP ولكن يسأل المستخدم أولاً. إذا وافق المستخدم، يُشغل الأمر. وإلا فإنه يرجع «خطأ» فقط. إذا شُغل الأمر، فسيُعاد توجيه مدخلاته القياسية من \fI/dev/null\fP. لا يجوز تحديد هذا الإجراء مع الخيار \fB\-files0\-from\fP. .IP تُطابق الاستجابة للمطالبة مع زوج من التعبيرات النمطية لتحديد ما إذا كانت استجابة بالإيجاب أو النفي. يُحصل على هذا التعبير النمطي من النظام إذا ضُبط متغير البيئة \fBPOSIXLY_CORRECT\fP، وإلا فمن ترجمات رسائل \fBfind\fP. إذا لم يكن لدى النظام تعريف مناسب، فسيُستخدم تعريف \fBfind\fP الخاص. في كلتا الحالتين، سيتأثر تفسير التعبير النمطي نفسه بمتغيرات البيئة \fBLC_CTYPE\fP (أصناف المحارف) و \fBLC_COLLATE\fP (نطاقات المحارف وأصناف التكافؤ). .IP "\-okdir \fIأمر\fP ;" مثل \fB\-execdir\fP ولكن يسأل المستخدم أولاً بنفس طريقة \fB\-ok\fP. إذا لم يوافق المستخدم، يرجع «خطأ» فقط. إذا شُغل الأمر، فسيُعاد توجيه مدخلاته القياسية من \fI/dev/null\fP. لا يجوز تحديد هذا الإجراء مع الخيار \fB\-files0\-from\fP. .IP \-print صحيح؛ يطبع اسم الملف الكامل على المخرجات القياسية، متبوعًا بسطر جديد. إذا كنت تمرر مخرجات \fBfind\fP إلى برنامج آخر وكان هناك أدنى احتمال لأن تحتوي الملفات التي تبحث عنها على سطر جديد، فيجب عليك التفكير بجدية في استخدام الخيار \fB\-print0\fP بدلاً من \fB\-print\fP. راجع قسم \fBأسماء الملفات غير العادية\fP للحصول على معلومات حول كيفية التعامل مع المحارف غير العادية في أسماء الملفات. .IP \-print0 صحيح؛ يطبع اسم الملف الكامل على المخرجات القياسية، متبوعًا بمحرف خالٍ (بدلاً من محرف السطر الجديد الذي يستخدمه \fB\-print\fP). يسمح هذا لأسماء الملفات التي تحتوي على أسطر جديدة أو أنواع أخرى من المساحات البيضاء بأن تُفسر بشكل صحيح بواسطة البرامج التي تعالج مخرجات \fBfind\fP. يقابل هذا الخيار الخيار \fB\-0\fP في \fBxargs\fP. .IP "\-printf \fIتنسيق\fP" صحيح؛ يطبع \fIتنسيق\fP على المخرجات القياسية، مفسرًا هروب «\e» وتوجيهات «%». يمكن تحديد عرض الحقول ودقتها كما هو الحال مع دالة C‏ \fBprintf\fP(3). يرجى ملاحظة أن العديد من الحقول تُطبع كـ %s بدلاً من %d، وهذا قد يعني أن الأعلام لا تعمل كما قد تتوقع. وهذا يعني أيضًا أن العلم «\-» يعمل (فهو يجبر الحقول على المحاذاة جهة اليسار). على عكس \fB\-print\fP، لا يضيف \fB\-printf\fP سطرًا جديدًا في نهاية السلسلة. الهروب والتوجيهات هي: .RS .IP \ea جرس التنبيه. .IP \eb محو للخلف. .IP \ec إيقاف الطباعة من هذا التنسيق فورًا وتفريغ المخرجات. .IP \ef تغذية الصفحة. .IP \en سطر جديد. .IP \er رجوع الحامل. .IP \et علامة تبويب أفقية. .IP \ev علامة تبويب عمودية. .IP \e0 ASCII NUL. .IP \e\e شرطة مائلة خلفية حرفية («\e»). .IP \eNNN المحرف الذي رمز ASCII الخاص به هو NNN (ثماني). .PP يُعامل محرف «\e» المتبوع بأي محرف آخر كمحرف عادي، لذا يُطبع كلاهما. .IP %% علامة مئوية حرفية. .IP %a وقت آخر وصول للملف بالتنسيق الذي ترجعه دالة C‏ \fBctime\fP(3). .IP %A\fIk\fP وقت آخر وصول للملف بالتنسيق المحدد بواسطة \fIk\fP، وهو إما «@» أو توجيه لدالة C‏ \fBstrftime\fP(3). يوضح ما يلي قائمة غير كاملة بالقيم الممكنة لـ \fIk\fP. يرجى الرجوع إلى وثائق \fBstrftime\fP(3) للحصول على القائمة الكاملة. قد لا تتوفر بعض محارف مواصفات التحويل في جميع الأنظمة، بسبب الاختلافات في تنفيذ دالة مكتبة \fBstrftime\fP(3). .RS .IP @ الثواني منذ 1 يناير 1970، 00:00 بتوقيت جرينتش، مع جزء كسري. .PP حقول الوقت: .IP H الساعة (00..23) .IP I الساعة (01..12) .IP k الساعة (0..23) .IP l الساعة (1..12) .IP M الدقيقة (00..59) .IP p صباحًا أو مساءً حسب الإعدادات المحلية .IP r الوقت، بنظام 12 ساعة (hh:mm:ss [AP]M) .IP S الثانية (00.00 .. 61.00). يوجد جزء كسري. .IP T الوقت، بنظام 24 ساعة (hh:mm:ss.xxxxxxxxxx) .IP + التاريخ والوقت، مفصولين بـ «+»، على سبيل المثال «2004\-04\-28+22:22:05.0». هذا امتداد من جنو. يُعطى الوقت في المنطقة الزمنية الحالية (والتي قد تتأثر بضبط متغير البيئة \fBTZ\fP). يتضمن حقل الثواني جزءًا كسريًا. .IP X تمثيل الوقت حسب الإعدادات المحلية (H:M:S). يتضمن حقل الثواني جزءًا كسريًا. .IP Z المنطقة الزمنية (مثلًا EDT)، أو لا شيء إذا تعذر تحديد المنطقة الزمنية .PP حقول التاريخ: .IP a اسم يوم الأسبوع المختصر للمحلية (Sun..Sat) .IP A اسم يوم الأسبوع الكامل للمحلية، متغير الطول (Sunday..Saturday) .IP b اسم الشهر المختصر للمحلية (Jan..Dec) .IP B اسم الشهر الكامل للمحلية، متغير الطول (January..December) .IP c التاريخ والوقت للمحلية (Sat Nov 04 12:02:33 EST 1989). التنسيق هو نفسه المستخدم في \fBctime\fP(3) وللحفاظ على التوافق مع هذا التنسيق، لا يوجد جزء كسر في حقل الثواني. .IP d يوم من الشهر (01..31) .IP D التاريخ (mm/dd/yy) .IP F التاريخ (yyyy\-mm\-dd) .IP h نفس b .IP j يوم من السنة (001..366) .IP m الشهر (01..12) .IP U رقم الأسبوع من السنة مع اعتبار يوم الأحد أول أيام الأسبوع (00..53) .IP w يوم من الأسبوع (0..6) .IP W رقم الأسبوع من السنة مع اعتبار يوم الاثنين أول أيام الأسبوع (00..53) .IP x تمثيل التاريخ للمحلية (mm/dd/yy) .IP y آخر رقمين من السنة (00..99) .IP Y السنة (1970...\&) .RE .IP %b مقدار مساحة القرص المستخدمة لهذا الملف بكتل سعتها 512 بايت. نظرًا لأن مساحة القرص تُخصّص بمضاعفات حجم كتلة نظام الملفات، فإن هذا عادة ما يكون أكبر من %s/512، ولكن يمكن أن يكون أصغر إذا كان الملف ملفًا متناثرًا. .IP %B\fIk\fP وقت ميلاد الملف، أي وقت إنشائه، بالتنسيق المحدد بواسطة \fIk\fP، وهو نفسه المستخدم لـ %A. يُنتج هذا التوجيه سلسلة فارغة إذا كان نظام التشغيل أو نظام الملفات الأساسي لا يدعم أوقات الميلاد. .IP %c وقت آخر تغيير لحالة الملف بالتنسيق الذي تعيده دالة C المسماة \fBctime\fP(3). .IP %C\fIk\fP وقت آخر تغيير لحالة الملف بالتنسيق المحدد بواسطة \fIk\fP، وهو نفسه المستخدم لـ %A. .IP %d عمق الملف في شجرة الدليل؛ 0 تعني أن الملف هو نقطة البداية. .IP %D رقم الجهاز الذي يوجد عليه الملف (حقل st_dev في struct stat)، بالنظام العشري. .IP %f اطبع الاسم الأساسي؛ اسم الملف مع حذف أي أدلة سابقة (العنصر الأخير فقط). بالنسبة لـ \fB/\fP، النتيجة هي `/'. انظر قسم \fBالأمثلة\fP للاطلاع على مثال. .IP %F نوع نظام الملفات الذي يوجد عليه الملف؛ يمكن استخدام هذه القيمة لـ \-fstype. .IP %g اسم مجموعة الملف، أو معرف المجموعة الرقمي إذا لم يكن للمجموعة اسم. .IP %G معرف المجموعة الرقمي للملف. .IP %h اسم الدليل؛ الأدلة السابقة لاسم الملف (كل العناصر ما عدا الأخير). إذا كان اسم الملف لا يحتوي على أي شرطات مائلة (لأنه في الدليل الحالي) يتوسع محدد %h إلى `.'. بالنسبة للملفات التي هي أدلة بحد ذاتها وتحتوي على شرطة مائلة (بما في ذلك \fB/\fP)، يتوسع %h إلى سلسلة فارغة. انظر قسم \fBالأمثلة\fP للاطلاع على مثال. .IP %H نقطة البداية التي وُجد الملف تحتها. .IP %i رقم الآينود (inode) للملف (بالنظام العشري). .IP %k مقدار مساحة القرص المستخدمة لهذا الملف بكتل سعتها 1 كيلوبايت. نظرًا لأن مساحة القرص تُخصّص بمضاعفات حجم كتلة نظام الملفات، فإن هذا عادة ما يكون أكبر من %s/1024، ولكن يمكن أن يكون أصغر إذا كان الملف ملفًا متناثرًا. .IP %l هدف الوصلة الرمزية (سلسلة فارغة إذا لم يكن الملف وصلة رمزية). .IP %m بتات أذونات الملف (بالنظام الثماني). يستخدم هذا الخيار الأرقام `التقليدية' التي تستخدمها معظم تطبيقات يونكس، ولكن إذا كان تطبيقك الخاص يستخدم ترتيبًا غير عادي لبتات الأذونات الثمانية، فسترى فرقًا بين القيمة الفعلية لوضع الملف وخرج %m. عادةً ما سترغب في وجود صفر بادئ في هذا الرقم، وللقيام بذلك، يجب عليك استخدام علامة \fB#\fP (كما في المثال `%#m'). .IP %M أذونات الملف (بالشكل الرمزي، كما في \fBls\fP). هذا التوجيه مدعوم في findutils 4.2.5 وما بعدها. .IP %n عدد الوصلات الصلبة للملف. .IP %p اسم الملف. .IP %P اسم الملف مع حذف اسم نقطة البداية التي وُجد تحتها. .IP %s حجم الملف بالبايت. .IP %S تشتت الملف. يُحسب على أنه (BLOCKSIZE*st_blocks / st_size). القيمة الدقيقة التي ستحصل عليها لملف عادي بطول معين تعتمد على النظام. ومع ذلك، عادةً ما تكون قيم الملفات المتناثرة أقل من 1.0، والملفات التي تستخدم كتلًا غير مباشرة قد تكون قيمتها أكبر من 1.0. بشكل عام، يعتمد عدد الكتل التي يستخدمها الملف على نظام الملفات. القيمة المستخدمة لـ BLOCKSIZE تعتمد على النظام، ولكنها عادةً ما تكون 512 بايت. إذا كان حجم الملف صفرًا، فإن القيمة المطبوعة غير محددة. في الأنظمة التي تفتقر إلى دعم st_blocks، يُفترض أن تشتت الملف هو 1.0. .IP %t وقت آخر تعديل للملف بالتنسيق الذي تعيده دالة C المسماة \fBctime\fP(3). .IP %T\fIk\fP وقت آخر تعديل للملف بالتنسيق المحدد بواسطة \fIk\fP، وهو نفسه المستخدم لـ %A. .IP %u اسم مستخدم الملف، أو معرف المستخدم الرقمي إذا لم يكن للمستخدم اسم. .IP %U معرف المستخدم الرقمي للملف. .IP %y نوع الملف (كما في \fBls \-l\fP)، U=نوع غير معروف (لا ينبغي أن يحدث) .IP %Y نوع الملف (مثل %y)، مع تتبع الوصلات الرمزية: `L'=حلقة، `N'=غير موجود، `?' لأي خطأ آخر عند تحديد نوع هدف الوصلة الرمزية. .IP %Z (لـ SELinux فقط) سياق أمان الملف. .IP "%{ %[ %(" محجوز للاستخدام المستقبلي. .PP يُهمل محرف `%' المتبوع بأي محرف آخر، ولكن يُطبع المحرف الآخر (لا تعتمد على هذا، فقد تُقدّم محارف تنسيق إضافية). يتسبب وجود `%' في نهاية وسيط التنسيق في سلوك غير محدد لعدم وجود محرف يليه. في بعض المحليات، قد يخفي مفاتيح بابك، بينما في محليات أخرى قد يزيل الصفحة الأخيرة من الرواية التي تقرأها. يدعم التوجيهان %m و %d الأعلام \fB#\fP و \fB0\fP و \fB+\fP، لكن التوجيهات الأخرى لا تدعمها، حتى لو كانت تطبع أرقامًا. تشمل التوجيهات الرقمية التي لا تدعم هذه الأعلام \fBG\fP و \fBU\fP و \fBb\fP و \fBD\fP و \fBk\fP و \fBn\fP. علامة التنسيق `\-' مدعومة وتغير محاذاة الحقل من المحاذاة لليمين (وهي المبدئية) إلى المحاذاة لليسار. .PP انظر قسم \fBأسماء الملفات غير العادية\fP للحصول على معلومات حول كيفية التعامل مع المحارف غير العادية في أسماء الملفات. .RE .IP \-prune صحيح؛ إذا كان الملف دليلاً، فلا تنزل إليه. إذا أُعطي الخيار \fB\-depth\fP، فلن يكون لـ \fB\-prune\fP أي تأثير. نظرًا لأن \fB\-delete\fP يتضمن \fB\-depth\fP، فلا يمكنك استخدام \fB\-prune\fP و \fB\-delete\fP معًا بشكل مفيد. على سبيل المثال، لتخطي الدليل \fIsrc/emacs\fP وجميع الملفات والأدلة التي تحته، وطباعة أسماء الملفات الأخرى التي وُجدت، افعل شيئًا كهذا: .in +4m .nf find . \-path ./src/emacs \-prune \-o \-print .fi .in .IP \-quit اخرج فورًا (مع قيمة إرجاع صفر إذا لم تحدث أخطاء). يختلف هذا عن \fB\-prune\fP لأن \fB\-prune\fP ينطبق فقط على محتويات الأدلة المقلّمة، بينما يجعل \fB\-quit\fP الأمر \fBfind\fP يتوقف فورًا وببساطة. لن تُترك أي عمليات فرعية قيد التشغيل. تُستدعى أي خطوط أوامر بُنيت بواسطة \fB\-exec\ ...\ +\fP أو \fB\-execdir\ ...\ +\fP قبل الخروج من البرنامج. بعد تنفيذ \fB\-quit\fP، لن تُعالج أي ملفات أخرى محددة في سطر الأوامر. على سبيل المثال، `\fBfind\ \fP\fI/tmp/foo\fP\fB\ \fP\fI/tmp/bar\fP\fB\ \-print\ \-quit\fP` سيطبع `/tmp/foo` فقط. .br أحد الاستخدامات الشائعة لـ \fB\-quit\fP هو التوقف عن البحث في نظام الملفات بمجرد العثور على ما نريد. على سبيل المثال، إذا أردنا العثور على ملف واحد فقط يمكننا القيام بذلك: .in +4m .nf find / \-name needle \-print \-quit .fi .in .SS المعاملات مدرجة بترتيب تنازلي للأسبقية: .IP "( \fIexpr\fP )" فرض الأسبقية. نظرًا لأن الأقواس خاصة بالصدفة، ستحتاج عادةً إلى اقتباسها. تستخدم العديد من الأمثلة في صفحة الدليل هذه الشرطات المائلة الخلفية لهذا الغرض: `\e(...\e)' بدلاً من `(...)'. .IP "! \fIexpr\fP" صحيح إذا كان \fIexpr\fP خطأ. سيحتاج هذا المحرف عادةً أيضًا إلى حماية من التفسير بواسطة الصدفة. .IP "\-not \fIexpr\fP" نفس !\& \fIexpr\fP، ولكنه ليس متوافقًا مع POSIX. .IP "\fIexpr1 expr2\fP" يُعتبر التعبيران المتتاليان منضمين بـ \fB\-a\fP ضمني؛ لا يُقيّم \fIexpr2\fP إذا كان \fIexpr1\fP خطأ. .IP "\fIexpr1\fP \-a \fIexpr2\fP" نفس \fIexpr1 expr2\fP. .IP "\fIexpr1\fP \-and \fIexpr2\fP" نفس \fIexpr1 expr2\fP، ولكنه ليس متوافقًا مع POSIX. .IP "\fIexpr1\fP \-o \fIexpr2\fP" أو؛ لا يُقيّم \fIexpr2\fP إذا كان \fIexpr1\fP صحيحاً. .IP "\fIexpr1\fP \-or \fIexpr2\fP" مثل \fIexpr1\fP \fB\-o\fP \fIexpr2\fP، ولكنه غير متوافق مع معايير POSIX. .IP "\fIexpr1\fP , \fIexpr2\fP" قائمة؛ يُقيّم كل من \fIexpr1\fP و \fIexpr2\fP دائماً. تُهمل قيمة \fIexpr1\fP؛ وتكون قيمة القائمة هي قيمة \fIexpr2\fP. يمكن أن يكون عامل الفاصلة مفيداً للبحث عن عدة أنواع مختلفة من الأشياء، مع عبور التسلسل الهرمي لنظام الملفات مرة واحدة فقط. يمكن استخدام الإجراء \fB\-fprintf\fP لسرد العناصر المتطابقة المختلفة في عدة ملفات مخرجات مختلفة. .P يرجى ملاحظة أن \fB\-a\fP عندما يُحدد ضمنياً (على سبيل المثال من خلال ظهور اختبارين بدون عامل صريح بينهما) أو صراحةً يكون له أسبقية أعلى من \fB\-o\fP. هذا يعني أن \fBfind . \-name afile \-o \-name bfile \-print\fP لن يطبع أبداً \fIafile\fP. . .SH "أسماء الملفات غير المألوفة" تؤدي العديد من إجراءات \fBfind\fP إلى طباعة بيانات تقع تحت تحكم مستخدمين آخرين. يشمل ذلك أسماء الملفات وأحجامها وأوقات التعديل وما إلى ذلك. تعد أسماء الملفات مشكلة محتملة لأنها يمكن أن تحتوي على أي محرف باستثناء `\e0' و `/'. يمكن أن تؤدي المحارف غير المألوفة في أسماء الملفات إلى أشياء غير متوقعة وغالباً ما تكون غير مرغوب فيها لمحطتك الطرفية (على سبيل المثال، تغيير إعدادات مفاتيح الوظائف في بعض المحطات الطرفية). تُعالج المحارف غير المألوفة بشكل مختلف بواسطة إجراءات متنوعة، كما هو موضح أدناه. .IP "\-print0, \-fprint0" اطبع دائماً اسم الملف الدقيق، دون تغيير، حتى لو كانت المخرجات موجهة إلى محطة طرفية. .IP "\-ls, \-fls" يُجرى دائماً هروب للمحارف غير المألوفة. تُطبع المسافات البيضاء، والشرطة المائلة العكسية، وعلامات الاقتباس المزدوجة باستخدام هروب بنمط لغة C (على سبيل المثال `\ef', `\e"'). تُطبع المحارف غير المألوفة الأخرى باستخدام هروب ثماني. تُطبع المحارف الأخرى القابلة للطباعة (بالنسبة لـ \fB\-ls\fP و \fB\-fls\fP هي المحارف بين الثماني 041 و 0176) كما هي. .IP "\-printf, \-fprintf" إذا لم تكن المخرجات موجهة إلى محطة طرفية، فإنها تُطبع كما هي. بخلاف ذلك، تعتمد النتيجة على التوجيه المستخدم. تتوسع التوجيهات %D، %F، %g، %G، %H، %Y، و %y إلى قيم لا تقع تحت تحكم مالكي الملفات، لذا تُطبع كما هي. التوجيهات %a، %b، %c، %d، %i، %k، %m، %M، %n، %s، %t، %u و %U لها قيم تقع تحت تحكم مالكي الملفات ولكن لا يمكن استخدامها لإرسال بيانات عشوائية إلى المحطة الطرفية، لذا تُطبع هذه كما هي. التوجيهات %f، %h، %l، %p و %P تُوضع بين علامات اقتباس. يُجرى هذا الاقتباس بنفس الطريقة المستخدمة في GNU \fBls\fP. هذه ليست نفس آلية الاقتباس المستخدمة مع \fB\-ls\fP و \fB\-fls\fP. إذا كنت قادراً على تحديد التنسيق الذي ستستخدمه لمخرجات \fBfind\fP، فمن الأفضل عادةً استخدام `\e0' كمنهٍ بدلاً من استخدام سطر جديد، لأن أسماء الملفات يمكن أن تحتوي على مسافات بيضاء ومحارف سطر جديد. يُستخدم إعداد متغير البيئة \fBLC_CTYPE\fP لتحديد المحارف التي يجب اقتباسها. .IP "\-print, \-fprint" يُعالج الاقتباس بنفس الطريقة المستخدمة في \fB\-printf\fP و \fB\-fprintf\fP. إذا كنت تستخدم \fBfind\fP في نص برمجى أو في موقف قد تحتوي فيه الملفات المتطابقة على أسماء عشوائية، فيجب عليك التفكير في استخدام \fB\-print0\fP بدلاً من \fB\-print\fP. .P تطبع إجراءات \fB\-ok\fP و \fB\-okdir\fP اسم الملف الحالي كما هو. قد يتغير هذا في إصدار مستقبلي. . .SH "المطابقة للمعايير" لتحقيق أوثق مطابقة لمعيار POSIX، يجب عليك ضبط متغير البيئة \fBPOSIXLY_CORRECT\fP. الخيارات التالية محددة في معيار POSIX (المعيار IEEE Std 1003.1\-2008، إصدار 2016): .IP \fB\-H\fP هذا الخيار مدعوم. .IP \fB\-L\fP هذا الخيار مدعوم. .IP \fB\-name\fP هذا الخيار مدعوم، لكن توافق POSIX يعتمد على توافق POSIX لدالة مكتبة النظام \fBfnmatch\fP(3). بدءاً من findutils\-4.2.2، تطابق محارف صدفة الميتا (مثل `*' أو `?' أو `[]') النقطة `.' البادئة، لأن تفسير IEEE PASC رقم 126 يتطلب ذلك. هذا تغيير عن الإصدارات السابقة من findutils. .IP \fB\-type\fP مدعوم. يحدد POSIX كلاً من `b' و `c' و `d' و `l' و `p' و `f' و `s'. يدعم GNU find أيضاً `D' الذي يمثل الباب (Door)، حيث يوفر نظام التشغيل ذلك. علاوة على ذلك، يسمح GNU find بتحديد أنواع متعددة في وقت واحد في قائمة مفصولة بفاصلة. .IP \fB\-ok\fP مدعوم. يكون تفسير الاستجابة وفقاً لأنماط `نعم' و `لا' المحددة عن طريق ضبط متغير البيئة \fBLC_MESSAGES\fP. عندما يُضبط متغير البيئة \fBPOSIXLY_CORRECT\fP، تُؤخذ هذه الأنماط من تعريف النظام للاستجابة الإيجابية (نعم) أو السلبية (لا). راجع وثائق النظام لـ \fBnl_langinfo\fP(3)، وخاصة YESEXPR و NOEXPR. عندما لا يُضبط \fBPOSIXLY_CORRECT\fP، تُؤخذ الأنماط بدلاً من ذلك من كتالوج رسائل \fBfind\fP الخاص. .IP \fB\-newer\fP مدعوم. إذا كان الملف المحدد هو رابط رمزي، فإنه يُتبع دائماً (dereferenced). هذا تغيير عن السلوك السابق، الذي كان يأخذ الوقت ذي الصلة من الرابط الرمزي؛ راجع قسم HISTORY أدناه. .IP \fB\-perm\fP مدعوم. إذا لم يُضبط متغير البيئة \fBPOSIXLY_CORRECT\fP، فإن بعض وسائط الوضع (على سبيل المثال +a+x) غير الصالحة في POSIX تكون مدعومة للتوافق مع الإصدارات السابقة. .IP "أساسيات أخرى" الأساسيات \fB\-atime\fP و \fB\-ctime\fP و \fB\-depth\fP و \fB\-exec\fP و \fB\-group\fP و \fB\-links\fP و \fB\-mtime\fP و \fB\-nogroup\fP و \fB\-nouser\fP و \fB\-ok\fP و \fB\-path\fP و \fB\-print\fP و \fB\-prune\fP و \fB\-size\fP و \fB\-user\fP و \fB\-xdev\fP جميعها مدعومة. .P يحدد معيار POSIX الأقواس `(' و `)'، والنفي `!' وعوامل AND/OR المنطقية \fB\-a\fP و \fB\-o\fP. .P تعد جميع الخيارات والمسندات والتعبيرات الأخرى وما إلى ذلك توسعات خارج معيار POSIX. ومع ذلك، فإن العديد من هذه التوسعات ليست فريدة لـ GNU find. .P يتطلب معيار POSIX أن يكتشف \fBfind\fP الحلقات: .IP يجب أن تكتشف أداة \fBfind\fP الحلقات اللانهائية؛ أي الدخول إلى دليل تمت زيارته مسبقاً وهو سلف لآخر ملف تمت مواجهته. عندما يكتشف حلقة لانهائية، يجب على \fBfind\fP كتابة رسالة تشخيصية إلى الخطأ القياسي ويجب عليه إما استعادة موضعه في التسلسل الهرمي أو الإنهاء. .P يتوافق GNU \fBfind\fP مع هذه المتطلبات. غالباً ما يكون عدد روابط الأدلة التي تحتوي على مدخلات هي روابط صلبة لسلف أقل مما ينبغي أن تكون عليه. يمكن أن يعني هذا أن GNU find سيقوم أحياناً بتحسين زيارة دليل فرعي هو في الواقع رابط لسلف عن طريق حذفها. بما أن \fBfind\fP لا يدخل فعلياً مثل هذا الدليل الفرعي، فيُسمح له بتجنب إصدار رسالة تشخيصية. على الرغم من أن هذا السلوك قد يكون مربكاً بعض الشيء، فمن غير المرجح أن يعتمد أي شخص فعلياً على هذا السلوك. إذا أُوقف تحسين الأوراق باستخدام \fB\-noleaf\fP، فسيُفحص مدخل الدليل دائماً وستُصدر الرسالة التشخيصية عندما يكون ذلك مناسباً. لا يمكن استخدام الروابط الرمزية لإنشاء دورات في نظام الملفات على هذا النحو، ولكن إذا كان الخيار \fB\-L\fP أو الخيار \fB\-follow\fP قيد الاستخدام، فستُصدر رسالة تشخيصية عندما يواجه \fBfind\fP حلقة من الروابط الرمزية. كما هو الحال مع الحلقات التي تحتوي على روابط صلبة، فإن تحسين الأوراق يعني غالباً أن \fBfind\fP يعرف أنه لا يحتاج إلى استدعاء \fIstat()\fP أو \fIchdir()\fP على الرابط الرمزي، لذا فإن هذا التشخيص غالباً ما يكون غير ضروري. .P الخيار \fB\-d\fP مدعوم للتوافق مع أنظمة BSD المختلفة، ولكن يجب عليك استخدام الخيار المتوافق مع POSIX وهو \fB\-depth\fP بدلاً من ذلك. .P لا يؤثر متغير البيئة \fBPOSIXLY_CORRECT\fP على سلوك اختبارات \fB\-regex\fP أو \fB\-iregex\fP لأن هذه الاختبارات غير محددة في معيار POSIX. . .SH "متغيرات البيئة" .IP LANG يوفر قيمة مبدئية لمتغيرات التدويل غير المحددة أو الفارغة. .IP LC_ALL إذا ضُبط على قيمة نصية غير فارغة، فإنه يتجاوز قيم جميع متغيرات التدويل الأخرى. .IP LC_COLLATE يحدد معيار POSIX أن هذا المتغير يؤثر على مطابقة الأنماط المستخدمة لخيار \fB\-name\fP. يستخدم GNU find دالة مكتبة \fBfnmatch\fP(3)، وبالتالي فإن دعم \fBLC_COLLATE\fP يعتمد على مكتبة النظام. يؤثر هذا المتغير أيضاً على تفسير الاستجابة لـ \fB\-ok\fP؛ فبينما يختار متغير \fBLC_MESSAGES\fP النمط الفعلي المستخدم لتفسير الاستجابة لـ \fB\-ok\fP، فإن تفسير أي تعبيرات بين أقواس مربعة في النمط سيتأثر بـ \fBLC_COLLATE\fP. .IP LC_CTYPE يؤثر هذا المتغير على معاملة أصناف المحارف المستخدمة في التعبيرات المنتظمة وأيضاً مع اختبار \fB\-name\fP، إذا كانت دالة مكتبة النظام \fBfnmatch\fP(3) تدعم ذلك. يؤثر هذا المتغير أيضاً على تفسير أي أصناف محارف في التعبيرات المنتظمة المستخدمة لتفسير الاستجابة للمطالبة الصادرة عن \fB\-ok\fP. سيؤثر متغير البيئة \fBLC_CTYPE\fP أيضاً على المحارف التي تُعتبر غير قابلة للطباعة عند طباعة أسماء الملفات؛ راجع قسم أسماء الملفات غير المألوفة. .IP LC_MESSAGES يحدد الإعدادات المحلية (locale) التي ستُستخدم للرسائل الدولية. إذا كان متغير البيئة \fBPOSIXLY_CORRECT\fP مضبوطاً، فإن هذا يحدد أيضاً تفسير الاستجابة للمطالبة التي يُصدرها إجراء \fB\-ok\fP. .IP NLSPATH يحدد موقع كتالوجات رسائل التدويل. .IP PATH يؤثر على الأدلة التي يُبحث فيها للعثور على الملفات التنفيذية المستدعاة بواسطة \fB\-exec\fP و \fB\-execdir\fP و \fB\-ok\fP و \fB\-okdir\fP. .IP POSIXLY_CORRECT يحدد حجم الكتلة المستخدم بواسطة \fB\-ls\fP و \fB\-fls\fP. إذا كان \fBPOSIXLY_CORRECT\fP مضبوطاً، تكون الكتل وحدات من 512 بايت. بخلاف ذلك، تكون وحدات من 1024 بايت. .IP يؤدي ضبط هذا المتغير أيضاً إلى إيقاف رسائل التحذير (أي أنه يتضمن \fB\-nowarn\fP) افتراضياً، لأن POSIX يتطلب أن تكون جميع الرسائل المطبوعة على stderr، باستثناء مخرجات \fB\-ok\fP، تشخيصية ويجب أن تؤدي إلى حالة خروج غير صفرية. .IP عندما لا يُضبط \fBPOSIXLY_CORRECT\fP، يُعامل \fB\-perm \fP\fI+zzz\fP تماماً مثل \fB\-perm \fP\fI/zzz\fP إذا لم يكن \fI+zzz\fP وضعاً رمزياً صالحاً. عندما يُضبط \fBPOSIXLY_CORRECT\fP، تُعامل مثل هذه التراكيب كخطأ. .IP عندما يُضبط \fBPOSIXLY_CORRECT\fP، تُفسر الاستجابة للمطالبة التي يُصدرها إجراء \fB\-ok\fP وفقاً لكتالوج رسائل النظام، بدلاً من تفسيرها وفقاً لترجمات رسائل \fBfind\fP الخاصة. .IP "TZ (نطاق زمني)" يؤثر على النطاق الزمني المستخدم لبعض توجيهات التنسيق المتعلقة بالوقت لـ \fB\-printf\fP و \fB\-fprintf\fP. . .SH أمثلة .\" A bulleted \[bu] list of examples. .SS "نهج `find|xargs` البسيط" .IP \[bu] ابحث عن الملفات المسماة \fIcore\fP في الدليل \fI/tmp\fP أو ما دونه واحذفها. .nf \& .in +4m \fB$ find /tmp \-name core \-type f \-print | xargs /bin/rm \-f\fP .in \& .fi لاحظ أن هذا سيعمل بشكل غير صحيح إذا كانت هناك أي أسماء ملفات تحتوي على أسطر جديدة، أو علامات اقتباس مفردة أو مزدوجة، أو مسافات. . .SS "نهج `find \-print0 | xargs \-0` الأكثر أماناً" .IP \[bu] ابحث عن الملفات المسماة \fIcore\fP في الدليل \fI/tmp\fP أو ما دونه واحذفها، مع معالجة أسماء الملفات بطريقة تضمن التعامل الصحيح مع أسماء الملفات أو الأدلة التي تحتوي على علامات اقتباس مفردة أو مزدوجة أو مسافات أو أسطر جديدة. .nf \& .in +4m \fB$ find /tmp \-name core \-type f \-print0 | xargs \-0 /bin/rm \-f\fP .in \& .fi يأتي اختبار \fB\-name\fP قبل اختبار \fB\-type\fP لتجنب الاضطرار إلى استدعاء \fBstat\fP(2) على كل ملف. .PP لاحظ أنه لا يزال هناك سباق (race condition) بين الوقت الذي يعبر فيه \fBfind\fP التسلسل الهرمي طابعاً أسماء الملفات المتطابقة، والوقت الذي تعمل فيه العملية المنفذة بواسطة \fBxargs\fP على ذلك الملف. . .SS "معالجة نقاط بداية عشوائية" .IP \[bu] بفرض أن برنامجاً آخر \fIproggy\fP يقوم بالتصفية المسبقة وينشئ قائمة ضخمة من الملفات المفصولة بـ NUL، فقم بمعالجة هذه الملفات كنقاط بداية، وابحث عن جميع الملفات العادية الفارغة بينها: .nf \& .in +4m \fB$ proggy | find \-files0\-from \- \-maxdepth 0 \-type f \-empty\fP .in \& .fi يعني استخدام \fB`\-files0\-from\ \-`\fP قراءة أسماء نقاط البداية من \fIالدخل القياسي\fP، أي من الأنبوب (pipe)؛ ويضمن \fB\-maxdepth\ 0\fP فحص تلك المدخلات المحددة صراحةً فقط دون التكرار داخل الأدلة (في حال كانت إحدى نقاط البداية دليلاً). . .SS "تنفيذ أمر لكل ملف" .IP \[bu] شغّل \fIfile\fP على كل ملف في الدليل الحالي أو ما دونه. .nf \& .in +4m \fB$ find . \-type f \-exec file \(aq{}\(aq \e;\fP .in \& .fi لاحظ أن الأقواس محاطة بعلامات اقتباس مفردة لحمايتها من التفسير كعلامات ترقيم لنص الصدفة البرمجي. وبالمثل، تُحمى الفاصلة المنقوطة باستخدام شرطة مائلة عكسية، على الرغم من أنه كان من الممكن استخدام علامات اقتباس مفردة في تلك الحالة أيضاً. .PP في كثير من الحالات، قد يفضل المرء صيغة \fB`\-exec\ \&...\&\ +`\fP أو الأفضل صيغة \fB`\-execdir\ \&...\&\ +`\fP لأسباب تتعلق بالأداء والأمان. . .SS "عبور نظام الملفات مرة واحدة فقط \- لإجراءين مختلفين" .IP \[bu] اعبر نظام الملفات مرة واحدة فقط، مع إدراج الملفات والأدلة التي لها set\-user\-ID في \fI/root/suid.txt\fP والملفات الكبيرة في \fI/root/big.txt\fP. .nf \& .in +4m \fB$ find / \e\fP .in +4m \fB\e( \-perm \-4000 \-fprintf /root/suid.txt \(aq%#m %u %p\en\(aq \e) , \e\fP .br \fB\e( \-size +100M \-fprintf /root/big.txt \(aq%\-10s %p\en\(aq \e)\fP .in -4m .in -4m \& .fi يستخدم هذا المثال محرف متابعة السطر \(aq\e\(aq في أول سطرين لإرشاد الصدفة لمواصلة قراءة الأمر في السطر التالي. . .SS "البحث عن الملفات حسب العمر" .IP \[bu] ابحث عن الملفات في دليلك المنزلي التي عُدلت في آخر أربع وعشرين ساعة. .nf \& .in +4m \fB$ find $HOME \-mtime 0\fP .in \& .fi يعمل هذا الأمر بهذه الطريقة لأن الوقت المنقضي منذ آخر تعديل لكل ملف يُقسم على 24 ساعة ويُهمل أي باقي. هذا يعني أنه لمطابقة \fB\-mtime\fP \fB0\fP، يجب أن يكون للملف تعديل في الماضي قبل أقل من 24 ساعة. . .SS "البحث عن الملفات حسب الأذونات" .IP \[bu] ابحث عن الملفات القابلة للتنفيذ ولكنها غير قابلة للقراءة. .nf \& .in +4m \fB$ find /sbin /usr/sbin \-executable \e! \-readable \-print\fP .in \& .fi . .IP \[bu] ابحث عن الملفات التي لها إذن القراءة والكتابة لمالكها ومجموعتها، ولكن يمكن للمستخدمين الآخرين قراءتها ولكن لا يمكنهم الكتابة إليها. .nf \& .in +4m \fB$ find . \-perm 664\fP .in \& .fi الملفات التي تستوفي هذه المعايير ولكن لها بتات أذونات أخرى مضبوطة (على سبيل المثال إذا كان بإمكان شخص ما تنفيذ الملف) لن تُطابق. . .IP \[bu] ابحث عن الملفات التي لها إذن القراءة والكتابة لمالكها ومجموعتها، والتي يمكن للمستخدمين الآخرين قراءتها، بغض النظر عن وجود أي بتات أذونات إضافية (على سبيل المثال بت التنفيذ). .nf \& .in +4m \fB$ find . \-perm \-664\fP .in \& .fi سيُطابق هذا ملفاً بوضع \fI0777\fP، على سبيل المثال. . .IP \[bu] ابحث عن الملفات القابلة للكتابة بواسطة شخص ما (مالكها، أو مجموعتها، أو أي شخص آخر). .nf \& .in +4m \fB$ find . \-perm /222\fP .in \& .fi . .IP \[bu] ابحث عن الملفات القابلة للكتابة إما بواسطة مالكها أو مجموعتها. .nf \& .in +4m \fB$ find . \-perm /220\fP \fB$ find . \-perm /u+w,g+w\fP \fB$ find . \-perm /u=w,g=w\fP .in \& .fi تؤدي جميع هذه الأوامر الثلاثة نفس الشيء، لكن الأول يستخدم التمثيل الثماني لوضع الملف، والآخران يستخدمان الصيغة الرمزية. لا يجب أن تكون الملفات قابلة للكتابة من قبل كل من المالك والمجموعة لتُطابق؛ يكفي أحدهما. . .IP \[bu] ابحث عن الملفات القابلة للكتابة بواسطة كل من مالكها ومجموعتها. .nf \& .in +4m \fB$ find . \-perm \-220\fP \fB$ find . \-perm \-g+w,u+w\fP .in \& .fi يؤدي هذان الأمران نفس الشيء. . .IP \[bu] بحث أكثر تفصيلاً في الأذونات. .nf \& .in +4m \fB$ find . \-perm \-444 \-perm /222 \e! \-perm /111\fP \fB$ find . \-perm \-a+r \-perm /a+w \e! \-perm /a+x\fP .in \& .fi يبحث هذان الأمران عن الملفات القابلة للقراءة للجميع (\fB\-perm \-444\fP أو \fB\-perm \-a+r\fP)، ولها بت كتابة واحد على الأقل مضبوط (\fB\-perm /222\fP أو \fB\-perm /a+w\fP) ولكنها ليست قابلة للتنفيذ لأي شخص (\fB! \-perm /111\fP أو \fB! \-perm /a+x\fP على التوالي). . .SS "التقليم (Pruning) \- حذف ملفات وأدلة فرعية" .IP \[bu] انسخ محتويات \fI/source\-dir\fP إلى \fI/dest\-dir\fP، ولكن احذف الملفات والأدلة المسماة \fI.snapshot\fP (وأي شيء بداخلها). كما أنه يحذف الملفات أو الأدلة التي ينتهي اسمها بـ `\(ti'، ولكن ليس محتوياتها. .nf \& .in +4m \fB$ cd /source\-dir\fP \fB$ find . \-name .snapshot \-prune \-o \e( \e! \-name \(aq*~\(aq \-print0 \e) \e\fP .br .in +4m \fB| cpio \-pmd0 /dest\-dir\fP .in -4m .in -4m \& .fi إنّ الصيغة \fB\-prune\ \-o\ \e(\ \&...\&\ \-print0\ \e)\fP شائعة جدًا. الفكرة هنا هي أن التعبير قبل \fB\-prune\fP يطابق الأشياء التي سيُنفذ عليها التقليم. ومع ذلك، فإن الإجراء \fB\-prune\fP نفسه يُرجع قيمة صواب، لذا فإن \fB\-o\fP اللاحق يضمن تقييم الجانب الأيمن فقط للمجلدات التي لم تُقلم (محتويات المجلدات المقلمة لا تُزار أصلاً، لذا فإن محتوياتها ليست ذات صلة). التعبير الموجود على الجانب الأيمن من \fB\-o\fP يوضع بين قوسين للوضوح فقط. فهو يؤكد على أن إجراء \fB\-print0\fP لا يحدث إلا للأشياء التي لم يُطبق عليها \fB\-prune\fP. ولأن شرط `and' المبدئي بين الاختبارات يربط بشكل أقوى من \fB\-o\fP، فإن هذا هو السلوك المبدئي على أي حال، ولكن الأقواس تساعد في توضيح ما يجري. . .IP \[bu] بالنظر إلى مجلد المشاريع التالي ومجلدات إدارة SCM المرتبطة بها، نَفّذ بحثًا فعالاً عن جذور المشاريع: .nf \& .in +4m \fB$ find repo/ \e\fP .in +4m \fB\e( \-exec test \-d \(aq{}/.svn\(aq \e; \e\fP \fB\-or \-exec test \-d \(aq{}/.git\(aq \e; \e\fP \fB\-or \-exec test \-d \(aq{}/CVS\(aq \e; \e\fP \fB\e) \-print \-prune\fP .in -4m .in -4m \& .fi مخرجات عينة: .nf \& .in +4m \fBrepo/project1/CVS\fP \fBrepo/gnu/project2/.svn\fP \fBrepo/gnu/project3/.svn\fP \fBrepo/gnu/project3/src/.svn\fP \fBrepo/project4/.git\fP .in \& .fi في هذا المثال، يمنع \fB\-prune\fP النزول غير الضروري إلى المجلدات التي اُكتشفت بالفعل (على سبيل المثال لا نبحث في \fIproject3/src\fP لأننا وجدنا بالفعل \fIproject3/.svn\fP)، ولكنه يضمن العثور على المجلدات الشقيقة (\fIproject2\fP و \fIproject3\fP). . .SS "أمثلة مفيدة أخرى" .IP \[bu] البحث عن عدة أنواع من الملفات. .nf \& .in +4m \fB$ find /tmp \-type f,d,l\fP .in \& .fi البحث عن الملفات، والمجلدات، والروابط الرمزية في المجلد \fI/tmp\fP مع تمرير هذه الأنواع كقائمة مفصولة بفاصلة (امتداد GNU)، وهو ما يعادل خلاف ذلك الصيغة الأطول والأكثر قابلية للنقل: .nf \& .in +4m \fB$ find /tmp \e( \-type f \-o \-type d \-o \-type l \e)\fP .in \& .fi . .IP \[bu] البحث عن ملفات بالاسم المحدد \fIneedle\fP والتوقف فورًا عند العثور على أول واحد. .nf \& .in +4m \fB$ find / \-name needle \-print \-quit\fP .in \& .fi . .IP \[bu] توضيح تفسير موجهات التنسيق \fB%f\fP و \fB%h\fP لإجراء \fB\-printf\fP لبعض الحالات الخاصة. إليك مثالاً يتضمن بعض المخرجات. .nf \& .in +4m \fB$ find . .. / /tmp /tmp/TRACE compile compile/64/tests/find \-maxdepth 0 \-printf '[%h][%f]\en'\fP \fB[.][.]\fP \fB[.][..]\fP \fB[][/]\fP \fB[][tmp]\fP \fB[/tmp][TRACE]\fP \fB[.][compile]\fP \fB[compile/64/tests][find]\fP .in \& .fi . .SH "حالة الخروج" يخرج \fBfind\fP بالحالة 0 إذا عولجت جميع الملفات بنجاح، وأكبر من 0 في حالة حدوث أخطاء. هذا وصف واسع جدًا عن عمد، ولكن إذا كانت القيمة المرجعة غير صفرية، فلا يجب الاعتماد على صحة نتائج \fBfind\fP. عند حدوث خطأ ما، قد يتوقف \fBfind\fP فورًا، دون إكمال جميع الإجراءات المحددة. على سبيل المثال، قد لا تُفحص بعض نقاط البداية أو قد لا تُنفذ بعض استدعاءات البرامج المعلقة لـ \fB\-exec\ \&...\&\ {}\ +\fP أو \fB\-execdir\ \&...\&\ {}\ +\fP. . .SH التاريخ ظهر برنامج \fBfind\fP في الإصدار 5 من Unix كجزء من مشروع Programmer's Workbench وكتبه Dick Haight. يوفر \fIA Research UNIX Reader: Annotated Excerpts from the Programmer’s Manual, 1971\-1986\fP لـ Doug McIlroy بعض التفاصيل الإضافية؛ يمكنك قراءته عبر الإنترنت على . كُتب GNU \fBfind\fP في الأصل بواسطة Eric Decker، مع تحسينات من David MacKenzie و Jay Plett و Tim Wood. جاءت فكرة \fBfind \-print0\fP و \fBxargs \-0\fP من Dan Bernstein. . .SH التوافقية بدءًا من findutils\-4.2.2، تطابق محارف الصدفة البديلة (مثل `*' أو `?' أو `[]') المستخدمة في أنماط أسماء الملفات نقطة `.' بادئة، لأن تفسير IEEE POSIX رقم 126 يتطلب ذلك. .P بدءًا من findutils\-4.3.3، يطابق \fB\-perm\ /000\fP الآن جميع الملفات بدلاً من لا شيء. .P نُفذت الطوابع الزمنية بدقة النانو ثانية في findutils\-4.3.3. .P بدءًا من findutils\-4.3.11، يضبط الإجراء \fB\-delete\fP حالة خروج \fBfind\fP على قيمة غير صفرية عند فشله. ومع ذلك، لن يخرج \fBfind\fP فورًا. سابقًا، لم تكن حالة خروج \fBfind\fP تتأثر بفشل \fB\-delete\fP. .TS l l l . الميزة أضيفت في تظهر أيضًا في \-files0\-from 4.9.0 \-newerXY 4.3.3 BSD \-D 4.3.1 \-O 4.3.1 \-readable 4.3.0 \-writable 4.3.0 \-executable 4.3.0 \-regextype 4.2.24 \-exec ... + 4.2.12 POSIX \-execdir 4.2.12 BSD \-okdir 4.2.12 \-samefile 4.2.11 \-H 4.2.5 POSIX \-L 4.2.5 POSIX \-P 4.2.5 BSD \-delete 4.2.3 \-quit 4.2.3 \-d 4.2.3 BSD \-wholename 4.2.0 \-iwholename 4.2.0 \-ignore_readdir_race 4.2.0 \-fls 4.0 \-ilname 3.8 \-iname 3.8 \-ipath 3.8 \-iregex 3.8 .TE .P أُزيلت الصيغة \fB\-perm +MODE\fP في findutils\-4.5.12، لصالح \fB\-perm\fP \fB/MODE\fP. كانت الصيغة \fB+MODE\fP قد أصبحت مهجورة منذ findutils\-4.2.21 الذي أُصدر في عام 2005. . .SH "ليست عللاً" .SS "مفاجآت أسبقية المعاملات" الأمر \fBfind . \-name afile \-o \-name bfile \-print\fP لن يطبع أبدًا \fIafile\fP لأن هذا يعادل في الواقع \fBfind . \-name afile \-o \e( \-name bfile \-a \-print \e)\fP. تذكر أن أسبقية \fB\-a\fP أعلى من أسبقية \fB\-o\fP وعندما لا يُحدد أي معامل بين الاختبارات، يُفترض وجود \fB\-a\fP. .SS "رسالة الخطأ \(lqpaths must precede expression\(rq" .nf \fB$ find . \-name *.c \-print\fP find: paths must precede expression find: possible unquoted pattern after predicate `\-name'? .fi .P يحدث هذا عندما تتمكن الصدفة من توسيع النمط \fI*.c\fP إلى أكثر من اسم ملف موجود في المجلد الحالي، وتمرير أسماء الملفات الناتجة في سطر الأوامر إلى \fBfind\fP هكذا: .nf . \fBfind . \-name frcode.c locate.c word_io.c \-print\fP . .fi لن يعمل هذا الأمر بالطبع، لأن مسند \fB\-name\fP يسمح بنمط واحد فقط كوسيط. بدلاً من القيام بالأشياء بهذه الطريقة، يجب عليك إحاطة النمط بعلامات اقتباس أو الهروب من محرف العلامة البديلة، مما يسمح لـ \fBfind\fP باستخدام النمط مع العلامة البديلة أثناء البحث عن مطابقة أسماء الملفات بدلاً من أسماء الملفات التي وسعت بواسطة الصدفة الأب: .nf \fB$ find . \-name \(aq*.c\(aq \-print\fP \fB$ find . \-name \e*.c \-print\fP .fi . .SH العلل توجد مشاكل أمنية متأصلة في السلوك الذي يحدده معيار POSIX لـ \fBfind\fP، والتي لا يمكن بالتالي إصلاحها. على سبيل المثال، إجراء \fB\-exec\fP غير آمن بطبيعته، ويجب استخدام \fB\-execdir\fP بدلاً منه. . .P متغير البيئة \fBLC_COLLATE\fP ليس له أي تأثير على إجراء \fB\-ok\fP. . .SH "التبليغ عن الأخطاء" مساعدة GNU findutils عبر الإنترنت: .br أبلغ عن أي أخطاء ترجمة إلى .PP أبلغ عن أي مشكلة أخرى عبر النموذج الموجود في متعقب علل GNU Savannah: .RS .RE تُناقش الموضوعات العامة حول حزمة GNU findutils في القائمة البريدية \fIbug\-findutils\fP: .RS .RE . .SH "حقوق النسخ" حقوق النشر \(co 1990\(en2024 مؤسسة البرمجيات الحرة، المحدودة. رخصة GPLv3+: رخصة جنو العمومية الإصدار 3 أو أحدث . .br هذا برنامج حر: أنت حر في تغييره وإعادة توزيعه. لا يوجد أي ضمان، إلى المدى الذي يسمح به القانون. . .SH "انظر أيضًا" \fBchmod\fP(1), \fBlocate\fP(1), \fBls\fP(1), \fBupdatedb\fP(1), \fBxargs\fP(1), \fBlstat\fP(2), \fBstat\fP(2), \fBctime\fP(3) \fBfnmatch\fP(3), \fBprintf\fP(3), \fBstrftime\fP(3), \fBlocatedb\fP(5), \fBregex\fP(7) .PP التوثيق الكامل .br أو متاح محليًا عبر: \fBinfo find\fP .PP .SH ترجمة تُرجمت هذه الصفحة من الدليل بواسطة . .PP هذه الترجمة هي وثيقة مجانية؛ راجع .UR https://www.gnu.org/licenses/gpl-3.0.html رخصة جنو العامة الإصدار 3 .UE أو ما بعده للاطلاع على شروط حقوق النشر. لا توجد أي ضمانات. .PP إذا وجدت أي أخطاء في ترجمة صفحة الدليل هذه، يرجى إرسال بريد إلكتروني إلى قائمة بريد المترجمين: .MT kde-l10n-ar@kde.org .ME .