<ก่อนหน้านี้ | Contents | ถัดไป>
ปรับปรุงประสิทธิภาพ
เมื่อราคาของ -Exec ใช้การดำเนินการ เรียกใช้อินสแตนซ์ใหม่ของคำสั่งที่ระบุทุกครั้งที่พบไฟล์ที่ตรงกัน มีบางครั้งที่เราอาจต้องการรวมผลการค้นหาทั้งหมดและเรียกใช้อินสแตนซ์ของคำสั่งเดียว ตัวอย่างเช่น แทนที่จะรันคำสั่งเช่นนี้:
ls -l file1
ls -l file2
เราอาจต้องการดำเนินการด้วยวิธีนี้:
ls -l ไฟล์1 ไฟล์2
จึงทำให้คำสั่งถูกดำเนินการเพียงครั้งเดียวมากกว่าหลายครั้ง มีสองวิธีที่เราสามารถทำได้ วิธีดั้งเดิมโดยใช้คำสั่งภายนอก xargs และอีกทางหนึ่งโดยใช้คุณสมบัติใหม่ใน พบ ตัวเอง. เราจะพูดถึงทางเลือกอื่นก่อน
โดยการเปลี่ยนอักขระอัฒภาคต่อท้ายเป็นเครื่องหมายบวก เราเปิดใช้งานความสามารถของ พบ เพื่อรวมผลลัพธ์ของการค้นหาลงในรายการอาร์กิวเมนต์สำหรับการดำเนินการคำสั่งที่ต้องการเพียงครั้งเดียว กลับไปที่ตัวอย่างของเรา สิ่งนี้:
ค้นหา ~ -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 ฉัน
ฉัน 224 2007-10-29 18:44 /home/me/bin/foo
ฉัน 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 ฉัน
ฉัน 224 2007-10-29 18:44 /home/me/bin/foo
ฉัน 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 สั่งครั้งเดียว