Perché questo non mostra i file / cartelle nascosti?


140

Stavo cercando nel mio sistema du -sch ./*per trovare i grandi file inutili che potrei aver accumulato senza motivo, quando ho trovato questo:

$ 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

Come posso rendere visibili i file nascosti? du -sch ./.*dà lo stesso risultato di du -sch ./*.


du -hs .[^.]* *per tutti i file nascosti, esclusi . e ..quali altre risposte sembrano mancare.
laggingreflex,

Risposte:


245

Uso

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

nella tua cartella home.

In alternativa, il comando che utilizzo più frequentemente è

ncdu

Facile da installare se necessario:

sudo apt-get install ncdu

1
Grazie, sei un genio. Non sono un maestro in bash, cosa facciamo [!.]?
Dr_Bunsen,

10
@Dr_Bunsen: è un glob che elenca tutti i file che iniziano con un singolo .. Ecco un trucco accurato: se non sai cosa fa una cosa globosa, prova a correre echo .[!.]*o altro. La shell quindi espanderà il glob e lo passerà echo, stampando l'elenco dei file che ne risultano.
Tikhon Jelvis,

14
Ciò non riesce a elencare i file denominati like ..fooe può causare problemi con i file il cui nome inizia con -. Potrebbe anche fallire se l'elenco arg è troppo lungo. du -ahd1non avrebbe nessuno di questi problemi.
Stéphane Chazelas,

Irrilevante alla domanda iniziale, ma rilevanti per giorno per uso quotidiano: Potrebbe essere utile includere interruttore 'C' per visualizzare il totale e per riordinare le opzioni un po 'per fare questo comando un po' più facile da ricordare: du -cksh .[!.]* * |sort -h.
Daddy32,

56

Ho la stessa domanda nella mailing list di coreutils, perché mi è stato difficile ricordare questo strano comando di @ don.joey. E Bob Proulx ha proposto un comando migliore e più naturale: du -ahd1 | sort -h

Se si desidera elencare tutti i file nella directory corrente, utilizzare "." o non dargli alcun argomento sul file. Inoltre potresti voler usare l'opzione -d, --max-depth = N.

Prova questo:

du -hd1


7
Aggiungi l' -aopzione affinché sia ​​equivalente.
Stéphane Chazelas,

6
Questa dovrebbe essere la risposta accettata perché è più semplice e facile da ricordare e comprendere.
Bastien,

8

Quando si esegue lo stesso comando all'interno della directory, non vengono inclusi i file nascosti che iniziano con .il conteggio. Se hai Steam installato ad esempio, per impostazione predefinita è l'installazione di giochi ~/.local/share/Steam/e viene installato anche lì.

A quanto pare bash è necessario eseguire du -sch .[!.]* *poiché non espande correttamente il .*glob. Sotto zsho altre shell, du -sch * .*dovrebbe funzionare, come .*dovrebbe essere espanso per includere l'elenco di tutti i file nascosti nella directory corrente.


OK. A quanto pare allora c'è un problema con bash, poiché non sembra espandersi correttamente .*. Ma du -sch * .*fa la cosa giusta sotto zsh. Sotto bash, du -sch .*sembra contare .ma non si espande per mostrare i file singolarmente.
Dobey,

Per me. * Si espande anche in ../* e quindi du esce dalla directory che voglio vedere le sue dimensioni! Ho dovuto usare invece ./.[^.[*.
Ari,

È zsh e tutte le shell derivate dalla shell Forsyth (al giorno d'oggi che è principalmente solo pdksh e suoi derivati) che fanno la cosa giusta e non si espandono. e qui. Tutte le altre conchiglie tipo Bourne (bash, Bourne, AT&T ksh, dash, yash ...). In zsh, useresti du -sch -- *(D)comunque, no du -sch -- * .*.
Stéphane Chazelas,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.