Aproveche la expansión de la llave:
du -b maybehere*/{*,.[^.],.??*}
o alternativamente
du -b maybehere*/{,.[^.],..?}*
La lógica detrás de esto probablemente no sea obvia, así que aquí hay una explicación:
*
coincide con todos los archivos no ocultos
.[^.]
coincide con los archivos cuyos nombres comenzaron con un solo punto seguido de no un punto; que son solo nombres de archivo de 2 caracteres en la primera forma.
.??*
coincide con archivos ocultos que tienen al menos 3 caracteres de longitud
..?*
como arriba, pero el segundo personaje debe ser un punto
El punto es excluir los enlaces duros al directorio actual y principal ( .
y ..
), ¡pero incluir todos los archivos normales de tal manera que cada uno de ellos se cuente solo una vez!
Por ejemplo, lo más simple sería escribir
du -b maybehere*/{.,}*
Significa que la lista contiene un punto .
y "nada" (nada está entre ,
y se cierra }
), por lo que todos los archivos ocultos (que comienzan desde un punto) y todos los archivos no ocultos (que comienzan desde "nada") coincidirían. El problema es que esto también coincidiría .
y ..
, y esto probablemente no sea lo que desea, por lo que debemos excluirlo de alguna manera.
Última palabra sobre la expansión del aparato ortopédico.
La expansión de llaves es un mecanismo por el cual puede incluir más archivos / cadenas / lo que sea en la línea de comandos escribiendo menos caracteres. La sintaxis es {word1,word2,...}
, es decir, es una lista de cadenas separadas por comas que comienza {
y termina con }
. bash
El manual proporciona un ejemplo de uso muy básico y al mismo tiempo muy común:
$ echo a{b,c,d}e
abe ace ade
maybehere*/.*
y agregue lo anterior para todos