Pourquoi cela ne montre-t-il pas les fichiers / dossiers cachés?

140

Je parcourais mon système du -sch ./*pour trouver les gros fichiers inutiles que j'ai pu stocker sans raison, quand j'ai trouvé ceci:

$ 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

Comment rendre les fichiers cachés visibles? du -sch ./.*donne le même résultat que du -sch ./*.

Dr_Bunsen
la source
du -hs .[^.]* *pour tous les fichiers cachés, à l’ exclusion . et pour ..lesquelles d’autres réponses semblent manquer.
laggingreflex

Réponses:

245

Utilisation

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

dans votre dossier personnel.

Sinon, la commande que j'utilise le plus souvent est

ncdu

Facile à installer si nécessaire:

sudo apt-get install ncdu
don.joey
la source
1
Merci, vous êtes un génie. Je ne suis pas un maître en bash, que font [!.]?
Dr_Bunsen
10
@Dr_Bunsen: C'est un glob qui répertorie tous les fichiers qui commencent par un seul .. Voici une astuce intéressante: si vous ne savez pas ce que fait une chose d’aspect mondial, essayez de courir echo .[!.]*ou peu importe. Le shell va ensuite développer le glob et le passer dans echo, en imprimant la liste des fichiers résultants.
Tikhon Jelvis
14
Cela ne permet pas de répertorier les fichiers portant le même nom ..fooet peut entraîner des problèmes avec les fichiers dont le nom commence par -. Il pourrait également échouer si la liste d'arguments est trop longue. du -ahd1aurait aucun de ces problèmes.
Stéphane Chazelas
Rapport avec la question initiale, mais pertinente à jour l'utilisation quotidienne: Il pourrait être utile d'inclure « c » interrupteur pour afficher le total et pour réorganiser les options un peu pour rendre cette commande plus facile de se rappeler un peu: du -cksh .[!.]* * |sort -h.
Papa32
56

J'ai la même question sur la liste de diffusion de coreutils, car il m'est difficile de me souvenir de cette commande étrange de @ don.joey. Et Bob Proulx a proposé un meilleur commandement, plus naturel: du -ahd1 | sort -h

Si vous voulez lister tous les fichiers du répertoire courant, utilisez soit '.' ou ne lui donnez pas d'arguments de fichier du tout. Vous pouvez également utiliser l'option -d, --max-depth = N.

Essaye ça:

du -hd1

Yurii Kolesnykov
la source
7
Ajoutez l' -aoption pour qu'il soit équivalent.
Stéphane Chazelas
6
Cela devrait être la réponse acceptée parce que c'est plus simple et plus facile à retenir et à comprendre.
Bastien
8

Lorsque vous exécutez cette même commande dans le répertoire, elle n'inclut pas les fichiers cachés qui commencent par .le nombre. Si vous avez par exemple installé Steam, il s’agit par défaut de l’installation de jeux ~/.local/share/Steam/et il s’y installe également.

Sous bash, vous devez apparemment fonctionner du -sch .[!.]* *car cela n’élargit pas correctement le .*glob. Sous zshou d'autres shells, du -sch * .*devrait fonctionner, de même que .*devrait être développé pour inclure la liste de tous les fichiers cachés dans le répertoire en cours.

Dobey
la source
D'ACCORD. Il y a donc apparemment un problème avec bash, car il ne semble pas se développer correctement .*. Mais du -sch * .*fait la bonne chose sous zsh. Sous bash, du -sch .*semble compter, .mais ne se développe pas pour afficher les fichiers individuellement.
Dobey
Pour moi. * S'étend également à ../* et donc du sort du répertoire que je veux voir sa taille! Je devais utiliser plutôt ./.[^.]*.
Ari
Ce sont zsh et tous les shells dérivés du shell Forsyth (de nos jours, il s'agit principalement de pdksh et de ses dérivés) qui agissent correctement et ne se développent pas. et ici. Tous les autres obus à la Bourne (bash, Bourne, AT & T ksh, dash, yash ...). Dans zsh, vous utiliseriez du -sch -- *(D)bien, pas du -sch -- * .*.
Stéphane Chazelas