ใช้ประโยชน์จากการขยายรั้ง:
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*/.*
และผนวกกับข้างต้นทั้งหมด