ใช้ประโยชน์จากการขยายรั้ง:
du -b maybehere*/{*,.[^.],.??*}
หรืออีกวิธีหนึ่ง
du -b maybehere*/{,.[^.],..?}*
ตรรกะเบื้องหลังนี้อาจไม่ชัดเจนดังนั้นนี่คือคำอธิบาย:
* จับคู่ไฟล์ที่ไม่ซ่อนทั้งหมด
.[^.]จับคู่ไฟล์ที่ชื่อขึ้นต้นด้วยจุดเดียวแล้วตามด้วยไม่ใช่จุด นั่นเป็นชื่อไฟล์อักขระเพียง 2 ตัวในรูปแบบแรก
.??* จับคู่ไฟล์ที่ซ่อนซึ่งมีความยาวอย่างน้อย 3 ตัวอักษร
..?* เหมือนด้านบน แต่อักขระตัวที่สองต้องเป็นจุด
จุดทั้งหมดคือการแยกฮาร์ดลิงก์ไปยังไดเรกทอรีปัจจุบันและพาเรนต์ ( .และ..) แต่รวมไฟล์ปกติทั้งหมดด้วยวิธีที่แต่ละไฟล์จะถูกนับเพียงครั้งเดียว!
ตัวอย่างที่ง่ายที่สุดคือการเขียน
du -b maybehere*/{.,}*
หมายความว่ารายการมีจุด.และ "ไม่มี" (ไม่มีอะไรอยู่ระหว่าง,และปิด}) ดังนั้นไฟล์ที่ซ่อนทั้งหมด (ซึ่งเริ่มต้นจากจุด) และไฟล์ที่ไม่ถูกซ่อนทั้งหมด (ซึ่งเริ่มต้นจาก "ไม่มี") จะจับคู่ ปัญหาคือว่าสิ่งนี้จะจับคู่.และ..และนี่อาจไม่ใช่สิ่งที่คุณต้องการดังนั้นเราจึงต้องยกเว้นมันอย่างใด
คำสุดท้ายเกี่ยวกับการขยายรั้ง
การขยายรั้งเป็นกลไกที่คุณสามารถรวมไฟล์ / สตริง / อะไรก็ได้ใน commandline ด้วยการเขียนตัวละครน้อยลง ไวยากรณ์{word1,word2,...}คือมันเป็นรายการของเครื่องหมายจุลภาคแยกสตริงที่เริ่มต้นและจบลงด้วยการ{ คู่มือให้พื้นฐานมากและในเวลาเดียวกันตัวอย่างการใช้งานทั่วไป}bash
$ echo a{b,c,d}e
abe ace ade
maybehere*/.*และผนวกกับข้างต้นทั้งหมด