Comment trouver récursivement la quantité stockée dans le répertoire?

136

Je sais que vous pouvez voir la taille en octets d'un fichier lorsque vous faites une longue liste avec llou ls -l. Mais je veux savoir quelle quantité de stockage se trouve dans un répertoire, y compris les fichiers de ce répertoire et les sous-répertoires qu'il contient, etc. Je ne veux pas du nombre de fichiers, mais de la quantité de stockage occupée par ces fichiers.

Donc, je veux savoir combien de stockage est récursivement dans un certain répertoire? J'imagine que s'il y a une commande, ce sera en octets.

Rob Avery IV
la source

Réponses:

146

Essayez de faire ceci:

du -s dir

ou

du -sh dir

a besoin d' -hassistance, dépend de votre système d'exploitation.

Voir

man du
Gilles Quenot
la source
2
ajouter -bà la sortie en octets
pcnate
4
--all liste tous les fichiers et -h affiche la taille du fichier en format lisible par l'homme du -h --all
Praneeth
29

Vous faites juste:

du -sh /path/to/directory

-sest pour résumé et -hpour lisible par l'homme ( option non standard ).

Attention , contrairement à lsce qui se passe , cela ne vous montrera pas la taille du fichier, mais l’utilisation du disque (c’est-à-dire un multiple de la taille de bloc du système de fichiers), mais le fichier peut être plus petit, voire plus gros. Vous pouvez donc utiliser l’ --apparent-sizeoption suivante:

du -sh --apparent-size /path/to/directory

C'est la taille qui serait transférée sur le réseau si vous deviez le faire.

En effet, le fichier peut avoir des "trous" (shell vide), peut être plus petit que la taille de bloc du système de fichiers, peut être compressé au niveau du système de fichiers, etc. La page de manuel explique cela.

Comme le souligne Nicklas , vous pouvez également utiliser l' analyseur d' utilisation du disque. Lancé depuis un répertoire, il vous montrera quels dossiers et fichiers utilisent l’espace disque en les classant par ordre croissant.ncdu

Vous pouvez voir cette question aussi.

Totor
la source
19

Notez que si vous voulez connaître la taille de tous les sous-dossiers dans un répertoire, vous pouvez également utiliser l' option -dou --max-depthde du(qui prend un argument: la limite récursive).

Par exemple :

du -h /path/to/directory -d 1

Va vous montrer quelque chose comme

4.0K /path/to/directory/folder1
16M  /path/to/directory/folder2
2.4G /path/to/directory/folder3
68M  /path/to/directory/folder4
8G   /path/to/directory/folder5

PS: Entrer 0comme limite récursive équivaut à l' -soption. Ces 2 commandes vous donneront le même résultat (votre répertoire donné est une taille lisible par l'homme):

du -h /path/to/directory -d 0
du -sh /path/to/directory
Flo Schild
la source
-d 1doit être avant le chemin du répertoire
Abhinav Singi
Besoins? Cela fonctionne pour moi après le chemin du répertoire, sur ubuntu / debian. Il est plus agréable de l'avoir avant, je suis d'accord
Flo Schild
14

Une alternative à la ducommande déjà mentionnée serait ncduun bon analyseur d’utilisation du disque à utiliser dans un terminal. Vous devrez peut-être d'abord l'installer, mais il est disponible dans la plupart des référentiels de paquets.

Edit: Pour le format de sortie, voir ces screenshots http://dev.yorhel.nl/ncdu/scr

Niklas
la source
Miracle! Grâce à cela, je peux voir quels dossiers contiennent un volume élevé de stockage de la taille du disque. J'ai même aussi retrouvé tous mes fichiers qui ont mystérieusement disparu. C'est un excellent outil.
Faron
11

Cela vous donnera une liste des tailles du répertoire actuel, y compris les dossiers (récursifs) et les fichiers.

$ du -hs *
7.5M    Applications
9.7M    Desktop
 85M    Documents
 16K    Downloads
 12G    Google Drive
 52G    Library
342M    Movies
8.3M    Music
780M    Pictures
8.5G    Projects
8.0K    Public
 16K    client1.txt
Simon Liu
la source
3
commander par taille: du -hs * | sort -hs
Kaiser
3

Sous Unix, un répertoire ne contient que des noms et des références à des objets de système de fichiers (inodes, qui peuvent faire référence à des répertoires, des fichiers ou à d’autres objets exotiques). Un fichier peut apparaître sous plusieurs noms dans le même répertoire ou être répertorié dans plusieurs répertoires. Donc, "l'espace utilisé par le répertoire et les fichiers à l'intérieur" n'a vraiment aucun sens, car les fichiers ne sont pas "à l'intérieur".

Cela dit, la commande du(1)liste l’espace utilisé par un répertoire et tout ce qui est accessible à travers celui-ci, du -sdonne un résumé. -hCertaines implémentations telles que GNU dudonnent une sortie "lisible par l’homme" (ie, kilo-octet, mégaoctet).

vonbrand
la source
1

Pour moi, cela a fonctionné à l'envers dans le cas de la profondeur et du chemin sous OS X El Capitán

du -h -d 1 /path/to/directory
GZepeda
la source
1

Vous pouvez utiliser "file-size.sh" depuis la bibliothèque de awk Velour :

ls -ARgo "$@" | awk '{q += $3} END {print q}'
Steven Penny
la source