¿Por qué esto no muestra los archivos / carpetas ocultos?

140

Estaba buscando en mi sistema du -sch ./*para encontrar los grandes archivos inútiles que podría haber almacenado sin ninguna razón, cuando encontré esto:

$ du -sch ./*
du: cannot read directory ‘./drbunsen/.gvfs’: Permission denied
du: cannot read directory ‘./drbunsen/.cache/dconf’: Permission denied
18G ./drbunsen
18G total

$ cd drbunsen/
$ du -sch ./*
601M ./Desktop
20K ./Documents
598M ./Downloads
4.0K ./flash
4.0K ./Music
8.0M ./Pictures
4.0K ./Public
4.0K ./Templates
4.0K ./Ubuntu One
8.0K ./Videos
11G ./VirtualBox VMs
6.9M ./workspace
12G total

¿Cómo hago visibles los archivos ocultos? du -sch ./.*da el mismo resultado que du -sch ./*.

Dr_Bunsen
fuente
du -hs .[^.]* *para todos los archivos ocultos, excluyendo . y ..qué otras respuestas parecen faltar.
laggingreflex

Respuestas:

245

Utilizar

du -sch .[!.]* * |sort -h

en tu carpeta de inicio.

Alternativamente, el comando que uso con más frecuencia es

ncdu

Fácil de instalar si es necesario:

sudo apt-get install ncdu
don.joey
fuente
1
Gracias, eres un genio. No soy un maestro en bash, ¿qué haces [!.]?
Dr_Bunsen
10
@Dr_Bunsen: es un globo que enumera todos los archivos que comienzan con un solo archivo .. Aquí hay un buen truco: si no sabes lo que hace una cosa de aspecto globoso, intenta correr echo .[!.]*o lo que sea. El shell luego expandirá el globo y lo pasará echo, imprimiendo la lista de archivos que resulta.
Tikhon Jelvis
14
Eso no puede enumerar los archivos con el nombre Me gusta ..fooy puede causar problemas con los archivos cuyo nombre comienza con -. También podría fallar si la lista arg es demasiado larga. du -ahd1No tendría ninguno de esos problemas.
Stéphane Chazelas
Irrelevante para la pregunta original, pero relevante para el uso diario: Podría ser útil incluir interruptor 'c' para visualizar el total y para reordenar las opciones un poco para que este comando un poco más fácil de recordar: du -cksh .[!.]* * |sort -h.
Daddy32
56

Tengo la misma pregunta en la lista de correo de coreutils, porque me fue difícil recordar este comando extraño de @ don.joey. Y Bob Proulx propuso un comando mejor y más natural: du -ahd1 | sort -h

Si desea enumerar todos los archivos en el directorio actual, use '.' o no le des ningún argumento de archivo. También es posible que desee utilizar la opción -d, --max-depth = N.

Prueba esto:

du -hd1

Yurii Kolesnykov
fuente
77
Agregue la -aopción para que sea equivalente.
Stéphane Chazelas
66
Esta debería ser la respuesta aceptada porque es más simple y fácil de recordar y comprender.
Bastien
8

Cuando ejecuta el mismo comando dentro del directorio, no incluye los archivos ocultos que comienzan .en el recuento. Si tiene instalado Steam, por ejemplo, la instalación de los juegos es predeterminada ~/.local/share/Steam/y también se instala allí.

Bajo bash aparentemente necesitas correr du -sch .[!.]* *ya que no expande adecuadamente el .*glob. Bajo zshu otros shells, du -sch * .*debería funcionar, ya que .*debería expandirse para incluir la lista de todos los archivos ocultos en el directorio actual.

dobey
fuente
OKAY. Aparentemente, hay un problema con bash, ya que no parece expandirse adecuadamente .*. Pero du -sch * .*hace lo correcto debajo zsh. Bajo bash, du -sch .*parece contar .pero no se expande para mostrar archivos individualmente.
dobey
Para mí. * También se expande a ../* y, por lo tanto, du sale del directorio en el que quiero ver su tamaño. Tuve que usar ./.[^.font>* en su lugar.
Ari
Es zsh y todas las conchas derivadas de la concha de Forsyth (hoy en día eso es principalmente pdksh y sus derivados) que hacen lo correcto y no se expanden. y aquí. Todos los otros proyectiles tipo Bourne (bash, Bourne, AT&T ksh, dash, yash ...). En zsh, lo usarías du -sch -- *(D), no du -sch -- * .*.
Stéphane Chazelas