Je sais que vous pouvez voir la taille en octets d'un fichier lorsque vous faites une longue liste avec ll
ou ls -l
. Mais je veux savoir combien d'espace de stockage se trouve dans un répertoire, y compris les fichiers dans ce répertoire et les sous-répertoires qu'il contient, etc. Je ne veux pas le nombre de fichiers, mais plutôt la quantité de stockage que ces fichiers occupent.
Je veux donc savoir combien d'espace de stockage est dans un certain répertoire récursivement? Je suppose, s'il y a une commande, que ce serait en octets.
Essayez de faire ceci:
du -s dir
ou
du -sh dir
besoins -h
prise en charge, dépend de votre système d'exploitation.
Voir
man du
Vous faites juste:
du -sh /path/to/directory
où -s
est pour résumé et -h
pour lisible par l'homme ( non standard option).
Attention cependant, contrairement à ls
, ce sera pas = vous montrer taille du fichier mais 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 grand, vous pouvez donc utiliser le --apparent-size
option:
du -sh --apparent-size /path/to/directory
Il s'agit de la taille qui serait transférée sur le réseau si vous le deviez.
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 ceci.
Comme Nicklassouligne , vous pouvez également utiliser l'analyseur d'utilisation du disque ncdu
. Lancé à partir d'un répertoire, il vous montrera quels dossiers et fichiers utilisent l'espace disque en les classant du plus grand au plus petit.
Vous pouvez également voir cette question .
Notez que si vous voulez connaître la taille de tous les sous-dossiers dans un répertoire, vous pouvez également utiliser le -d
ou --max-depth
option de du
(qui prend un argument: la limite récursive)
Par exemple :
du -h /path/to/directory -d 1
Vous montrera 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: Saisie de 0
car la limite récursive est équivalente à -s
option. Ces 2 commandes vous donneront le même résultat (votre répertoire donné de taille récursive lisible par l'homme):
du -h /path/to/directory -d 0
du -sh /path/to/directory
Une alternative à la commande du
déjà mentionnée serait ncdu
qui est un analyseur d'utilisation du disque Nice pour une utilisation dans le terminal. Vous devrez peut-être l'installer d'abord, mais il est disponible dans la plupart des référentiels de packages.
Modifier: Pour le format de sortie, voir ces captures d'écran http://dev.yorhel.nl/ncdu/scr
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
Sous Unix, un répertoire contient uniquement des noms et des références aux objets du système de fichiers (inodes, qui peuvent faire référence à des répertoires, des fichiers ou d'autres choses 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)
répertorie l'espace utilisé par un répertoire et tout ce qui est accessible à travers lui, du -s
donne un résumé, avec -h
certaines implémentations comme GNU du
donnent une sortie "lisible par l'homme" (c'est-à-dire kilo-octet, mégaoctet).
Vous pouvez utiliser "file-size.sh" à partir de l'awk bibliothèque Velour :
ls -ARgo "$@" | awk '{q += $3} END {print q}'
Pour moi, cela a fonctionné à l'envers dans le cas de la profondeur et du chemin sur un OS X El Capitán
du -h -d 1 /path/to/directory