Aproveite a expansão da cinta:
du -b maybehere*/{*,.[^.],.??*}
ou alternativamente
du -b maybehere*/{,.[^.],..?}*
A lógica por trás disso provavelmente não é óbvia, então aqui está a explicação:
*
corresponde a todos os arquivos não ocultos
.[^.]
corresponde aos arquivos cujos nomes começaram com ponto único seguido por não um ponto; são apenas dois nomes de arquivo de caracteres na primeira forma.
.??*
corresponde a arquivos ocultos com pelo menos 3 caracteres
..?*
como acima, mas o segundo caractere deve ser um ponto
O objetivo é excluir links físicos para o diretório atual e principal ( .
e ..
), mas incluir todos os arquivos normais de forma que cada um deles seja contado apenas uma vez!
Por exemplo, o mais simples seria apenas escrever
du -b maybehere*/{.,}*
Isso significa que a lista contém um ponto .
e "nada" (nada está entre ,
e fechando }
), portanto, todos os arquivos ocultos (que começam em um ponto) e todos os arquivos não ocultos (que começam em "nada") corresponderiam. O problema é que isso também corresponderia .
e ..
, e provavelmente não é o que você deseja, então temos que excluí-lo de alguma forma.
Palavra final sobre a expansão da cinta.
A expansão entre chaves é um mecanismo pelo qual você pode incluir mais arquivos / seqüências de caracteres / qualquer coisa na linha de comando escrevendo menos caracteres. A sintaxe é {word1,word2,...}
, ou seja, é uma lista de sequências separadas por vírgula que começa {
e termina com }
. bash
manual fornece um exemplo de uso muito básico e ao mesmo tempo muito comum:
$ echo a{b,c,d}e
abe ace ade
maybehere*/.*
e acrescente acima para todos #