การประมวลผลผลลัพธ์เป็นกลุ่ม
เพื่อประสิทธิภาพที่เพิ่มขึ้นหลายคนใช้xargs
เพื่อประมวลผลผลลัพธ์เป็นจำนวนมาก แต่มันอันตรายมาก เนื่องจากการที่มีวิธีการอื่นที่นำมาfind
ใช้ในการดำเนินการผลลัพธ์จำนวนมาก
โปรดทราบว่าวิธีนี้อาจมาพร้อมกับคำเตือนบางอย่างเช่นข้อกำหนดใน POSIX- find
เพื่อให้ได้{}
ที่ส่วนท้ายของคำสั่ง
export -f dosomething
find . -exec bash -c 'for f; do dosomething "$f"; done' _ {} +
find
จะส่งผ่านผลลัพธ์จำนวนมากเป็นอาร์กิวเมนต์ไปยังการเรียกใช้ครั้งเดียวbash
และfor
-loop วนซ้ำผ่านการขัดแย้งเหล่านั้นการเรียกใช้ฟังก์ชันdosomething
ในแต่ละรายการนั้น
วิธีการแก้ปัญหาข้างต้นเริ่มขัดแย้งที่$1
ซึ่งเป็นสาเหตุที่มี_
(ซึ่งหมายถึง$0
)
การประมวลผลผลลัพธ์หนึ่งต่อหนึ่ง
ในทำนองเดียวกันฉันคิดว่าคำตอบที่ได้รับการยอมรับควรได้รับการแก้ไขให้เป็น
export -f dosomething
find . -exec bash -c 'dosomething "$1"' _ {} \;
สิ่งนี้ไม่เพียง แต่มีสติมากขึ้นเท่านั้นเพราะข้อโต้แย้งควรเริ่มต้นเสมอ$1
แต่การใช้$0
อาจทำให้เกิดพฤติกรรมที่ไม่คาดคิดได้หากชื่อไฟล์ที่ส่งคืนโดยfind
มีความหมายพิเศษต่อเชลล์
$0
โดยวิธีการที่คุณสามารถใส่เครื่องมือจัดฟันด้านในคำพูดแทนการใช้