Approfitta dell'espansione del controvento:
du -b maybehere*/{*,.[^.],.??*}
o in alternativa
du -b maybehere*/{,.[^.],..?}*
La logica dietro questo non è probabilmente ovvia, quindi ecco la spiegazione:
*
corrisponde a tutti i file non nascosti
.[^.]
corrisponde ai file i cui nomi sono iniziati con un singolo punto seguito da non un punto; che sono solo 2 nomi di file di caratteri nella prima forma.
.??*
corrisponde a file nascosti che contengono almeno 3 caratteri
..?*
come sopra, ma il secondo carattere deve essere un punto
Il punto è escludere i collegamenti reali alla directory corrente e parent ( .
e ..
), ma includere tutti i file normali in modo tale che ciascuno di essi venga conteggiato una sola volta!
Ad esempio, il più semplice sarebbe scrivere
du -b maybehere*/{.,}*
Significa che l'elenco contiene un punto .
e "niente" (nulla è compreso tra ,
e in chiusura }
), quindi tutti i file nascosti (che iniziano da un punto) e tutti i file non nascosti (che iniziano da "niente") corrisponderebbero. Il problema è che anche questo corrisponderebbe .
e ..
, e molto probabilmente non è quello che vuoi, quindi dobbiamo escluderlo in qualche modo.
Parola finale sull'espansione del tutore.
L'espansione di parentesi graffe è un meccanismo mediante il quale è possibile includere più file / stringhe / qualunque cosa sulla riga di comando scrivendo meno caratteri. La sintassi è {word1,word2,...}
, cioè è un elenco di stringhe separate da virgola che inizia {
e finisce con }
. bash
il manuale fornisce un esempio molto semplice e allo stesso tempo molto comune di utilizzo:
$ echo a{b,c,d}e
abe ace ade
maybehere*/.*
e aggiungi sopra per tutti