هل هناك أي طريقة لمنع البحث من البحث بشكل متكرر في الدلائل الفرعية؟
سؤال
عندما أفعل:
$ find /
إنه يبحث في النظام بأكمله.
كيف يمكنني منع ذلك؟
(هذا السؤال يأتي من "إجابة"إلى سؤال آخر.)
المحلول
يوم سعيد،
أردت فقط التوسع في اقتراح جون لاستخدام -Prune.ليس من الأسهل استخدام خيارات البحث، على سبيل المثال، للبحث في الدليل الحالي فقط، يبدو أمر البحث كما يلي:
find . \( -type d ! -name . -prune \) -o \( <the bit you want to look for> \)
سيؤدي هذا إلى إيقاف البحث عن النزول إلى الدلائل الفرعية داخل هذا الدليل.
في الأساس، تقول الرسالة، "قم بتقليم أي شيء يمثل دليلاً، واسمه ليس "."، أي.دير الحالي."
يتم تقييم أمر البحث من اليسار إلى اليمين لكل عنصر موجود في الدليل الحالي، وذلك بعد الانتهاء من العنصر الأول، أي.شريحة التقليم، فسوف تستمر بعد ذلك مع العنصر المطابق في تعبير -o (OR'd) الثاني.
هث.
هتافات ، روب
نصائح أخرى
يعتبر:
-maxdepth n
True if the depth of the current file into the tree is less than
or equal to n.
-mindepth n
True if the depth of the current file into the tree is greater
than or equal to n.
قد يكون من الأفضل لك استخدام أحرف البدل.على سبيل المثال، إذا كنت تريد العثور على كافة البرامج النصية لـ ksh في الدليل الحالي:
$ ls *.ksh
استخدم ال -تقليم خيار.
يمكنك حتى أن تفعل
echo /specific/dir/*.jpg
لأن قوقعتك هي التي تعمل على توسيع حرف البدل.الكتابة
ls *.jpg
يعادل الكتابة
ls foo.jpg bar.jpg
نظرًا لأن foo.jpg وbar.jpg هي جميع الملفات التي تنتهي بـ ".jpg" في الدليل الحالي.