สารละลาย
โดยการจัดหาตัวเลือก-c(หรือ--total) ให้du(1)คุณสามารถสั่งให้ผลิตผลรวมทั้งหมด หากการใช้งานของคุณdu(1)รองรับตัวเลือกเหล่านี้คุณสามารถบรรลุผลตามที่ต้องการโดยใช้คำสั่งต่อไปนี้:
$ find . -name 'flibble*' -ctime +90 -exec du -shc {} +
แก้ไข:โปรดทราบว่าหากจำนวนไฟล์เกินจำนวนสูงสุดของพารามิเตอร์ที่ระบบของคุณอนุญาตfindอาจยังคงใช้งานได้commandหลายครั้ง การใช้งานบางส่วนของdu(1)ยังสนับสนุนการอ่านชื่อไฟล์จากไฟล์ซึ่งไม่ประสบข้อ จำกัด ดังกล่าว:
$ find -name 'flibble*' -ctime +90 -print0 > filenames
$ du -shc --files0-from=filenames
คำอธิบาย
ความแตกต่างระหว่างความหมายของ-exec command {} \;และ-exec command {} +มีดังต่อไปนี้:
command {} \;รันcommandหนึ่งครั้งสำหรับผลลัพธ์แต่ละfindรายการ ชื่อพา ธ {}ของผลที่ได้จะถูกส่งแทน
$ touch 1 2 3
$ find 1 2 3 -maxdepth 0 -exec echo {} \;
1
2
3
command {} +ดำเนินการcommandเมื่อผลลัพธ์ทั้งหมดได้รับการเรียกคืน pathnames {}ของผลที่จะถูกส่งผ่านแทน
$ touch 1 2 3
$ find 1 2 3 -maxdepth 0 -exec echo {} +
1 2 3
-print0ตัวเลือกที่เป็นสาเหตุของfind(1)การพิมพ์ชื่อไฟล์ที่พบในการออกมาตรฐานคั่นด้วยอักขระ null และ--files0-fromตัวเลือกที่เกิดจากdu(1)การอ่านชื่อไฟล์ null คั่น ไม่เหมือนกับอักขระขึ้นบรรทัดใหม่อักขระ null อาจไม่ปรากฏในชื่อไฟล์ดังนั้นเอาต์พุตจึงไม่คลุมเครือ
หากต้องการเรียนรู้เพิ่มเติมเกี่ยวกับตัวเลือกของdu(1)และfind(1)คุณควรปรึกษา manpages ที่เกี่ยวข้อง:
$ man du
$ man find