Comment puis-je calculer la taille d'un répertoire?

181

Comment connaître la taille d'un répertoire? Y compris les sous-répertoires et les fichiers.

Juanjo Conti
la source

Réponses:

230
du -s directory_name

Ou pour obtenir une sortie lisible par l'homme:

du -sh directory_name

L' -soption signifie qu'elle ne listera pas la taille de chaque sous-répertoire, mais uniquement la taille totale.

sepp2k
la source
7
En réalité du, l'unité par défaut est constituée de blocs de 512 octets selon POSIX et de kilo-octets sous Linux (à moins que la variable d'environnement ne POSIXLY_CORRECTsoit définie) ou avec du -k.
Gilles
3
@ Gilles: bonne prise. J'ai supprimé le bit "nombre d'octets" de ma réponse.
sepp2k
1
a travaillé comme prescrit
skidadon
1
si le répertoire est très volumineux et comporte de nombreux sous-répertoires, cela prend beaucoup de temps ... presque 1 min .. est-ce normal? y a-t-il un moyen d'obtenir la taille plus rapidement?
Yeahman
2
Je devais calculer la taille de mon dossier "sac", du -sh baga parfaitement fonctionné!
António Almeida
7

Bien que l’utilisation d’un paquet séparé tel que ncdu puisse bien fonctionner, la même comparaison de plusieurs dossiers peut être faite, dans une certaine mesure, en donnant simplement une liste de dossiers à dimensionner. Par exemple, pour comparer les répertoires de niveau supérieur sur votre système ...

cd /    
sudo du -sh ./*
Sans couleur
la source
2
Plus simplement,du -sh /*
roaima
7

GNU duprend une -boption.

Voir la manpage et la infopage pour plus d'aide:

-b, --bytesest équivalent à--apparent-size --block-size=1

utilisateur2573436
la source
1
du -csh

-c produit le grand total

Kalpesh Soni
la source
1
Le -cn'a pas de sens à utiliser avec -s, non? -saffiche uniquement la taille du répertoire spécifié, c'est-à-dire la taille totale du répertoire.
Andreas Storvik Strauman
1

Essayer

du -hax --max-depth=1 / | grep '[0-9]G' | sort -nr

Cela aide à trouver des répertoires volumineux à parcourir en utilisant du -sh ./*

rollinjack
la source
0

vous pouvez aussi utiliser ls -ldh:

ls -ldh /etc drwxr-xr-x 145 root root 12K 2012-06-02 11:44 /etc

-l est pour une longue liste; -d est destiné à afficher les informations de répertoire, pas le contenu du répertoire, -h est destiné à afficher la taille dans un format lisible par l'homme.

de naboo
la source
4
Ce n'est pas correct, la personne qui pose la question est clairement à la recherche de l'empreinte d'un répertoire et de son contenu sur le disque. La réponse de @ sepp2k est correcte.
Blong
1
La commande ls -ldh n'indique que la taille de la structure d'inode d'un répertoire. La métrique reflète la taille de la table d'index des noms de fichier, mais pas la taille réelle du contenu du fichier dans le répertoire.
linbianxiaocao
0

J'installe toujours le paquet "ncdu" et vois toutes les sorties de tous les répertoires avec une représentation graphique. En effet, j’ai généralement besoin de savoir ce qui occupe le plus d’espace disque sur mes machines, quel que soit le résultat de la synthèse d’un seul répertoire.

Utilisation: sudo ncdu /(Vous n’avez pas besoin sudode dossiers sur lesquels vous avez des droits de lecture).

L'analyse des statistiques d'utilisation du disque sur l'ensemble du système de fichiers prendra un certain temps. Il a une belle représentation graphique en ligne de commande et inclut une navigation au clavier à l'aide des touches fléchées, comme pour aller plus en profondeur ou plus haut dans le chemin balayé. Vous pouvez également supprimer des éléments en appuyant sur D.

Etescartz
la source
0

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

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

du -hd1

listera dans un format lisible par l’homme les tailles de tous les répertoires, par exemple

656K    ./rubberband
2.2M    ./lame
652K    ./pkg-config
Boris Yakubchik
la source
0

J'ai essayé avec la commande ci-dessous car déjà la meilleure réponse a été fournie

sudo find . -maxdepth 1 -exec du -shk {} \;| awk 'NR >1'| awk 'BEGIN{sum=1}{sum=sum+$1}END{print sum}'

sortie

 sudo find . -maxdepth 1 -exec du -shk {} \;| awk 'NR >1'| awk 'BEGIN{sum=1}{sum=sum+$1}END{print sum}'

679445
Praveen Kumar BS
la source