تحسين الكفاءة
عندما إكسيك يتم استخدام الإجراء ، يتم تشغيل مثيل جديد للأمر المحدد في كل مرة يتم العثور على ملف مطابق. هناك أوقات قد نفضل فيها دمج جميع نتائج البحث وتشغيل مثيل واحد من الأمر. على سبيل المثال ، بدلاً من تنفيذ الأوامر مثل هذا:
لس -l file1
لس -l file2
قد نفضل تنفيذها بهذه الطريقة:
لس -l ملف 1 ملف 2
مما يتسبب في تنفيذ الأمر مرة واحدة فقط بدلاً من عدة مرات. هناك طريقتان يمكننا القيام بذلك. الطريقة التقليدية باستخدام الأمر الخارجي com.xargs والطريقة البديلة ، باستخدام ميزة جديدة في جد بحد ذاتها. سنتحدث عن الطريقة البديلة أولاً.
من خلال تغيير الحرف الفاصلة المنقوطة اللاحقة إلى علامة الجمع ، نقوم بتنشيط قدرة جد لدمج نتائج البحث في قائمة الوسائط لتنفيذ واحد للأمر المطلوب. بالعودة إلى مثالنا ، هذا:
find ~ -type f -name 'foo *' -exec ls -l '{}' '؛'
find ~ -type f -name 'foo *' -exec ls -l '{}' '؛'
-rwxr-xr-x 1 لي
-rw-r - r - 1 لي
-rwxr-xr-x 1 لي
-rw-r - r - 1 لي
me 224 2007-10-29 18:44 / home / me / bin / foo
me 224 2007-10-29 18:44 / home / me / bin / foo
me
me
0 2016-09-19 12:53 / home/me/foo.txt
0 2016-09-19 12:53 / home/me/foo.txt
سوف ينفذ ls في كل مرة يتم العثور على ملف مطابق. بتغيير الأمر إلى:
اعثر على ~ -type f -name 'foo *' -exec ls -l '{}' +
اعثر على ~ -type f -name 'foo *' -exec ls -l '{}' +
-rwxr-xr-x 1 لي
-rw-r - r - 1 لي
-rwxr-xr-x 1 لي
-rw-r - r - 1 لي
me 224 2007-10-29 18:44 / home / me / bin / foo
me 224 2007-10-29 18:44 / home / me / bin / foo
me
me
0 2016-09-19 12:53 / home/me/foo.txt
0 2016-09-19 12:53 / home/me/foo.txt
نحصل على نفس النتائج ، ولكن يتعين على النظام فقط تنفيذ ls الأمر مرة واحدة.