Скористайтеся розширенням дужок:
du -b maybehere*/{*,.[^.],.??*}
або альтернативно
du -b maybehere*/{,.[^.],..?}*
Логіка цього, мабуть, не очевидна, тому ось пояснення:
* відповідає всім не прихованим файлам
.[^.]відповідає файлам, імена яких починалися з однієї крапки, а за ними - не крапка; що є лише двома іменами символів у першій формі.
.??* відповідає прихованим файлам, що мають принаймні 3 символи
..?* як вище, але другий символ повинен бути крапкою
Вся справа в тому, щоб виключити жорсткі посилання на поточний та батьківський каталог ( .і ..), але включити всі звичайні файли таким чином, що кожен з них буде зарахований лише один раз!
Наприклад, найпростіше було б просто написати
du -b maybehere*/{.,}*
Це означає, що список містить крапку .і "нічого" (нічого не знаходиться між ,і закривається }), таким чином, всі приховані файли (які починаються з крапки) і всі не приховані файли (які починаються з "нічого") не відповідають. Проблема полягає в тому, що це також буде відповідати .і .., і це , швидше за все , не те , що ви хочете, так що ми повинні виключити його як - то.
Заключне слово про розширення дужок.
Розширення дужок - це механізм, за допомогою якого ви можете додавати до командного рядка більше файлів / рядків / що завгодно, записуючи менше символів. Синтаксис є {word1,word2,...}, тобто це список рядків, розділених комами, який починається з {і закінчується с }. bashПосібник дає дуже основний і в той же час дуже поширений приклад використання:
$ echo a{b,c,d}e
abe ace ade
maybehere*/.*і додати вище всіх для себе