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