web-dev-qa-db-fra.com

Comment calculer la taille d'un répertoire?

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

189
Juanjo Conti
du -s directory_name

Ou pour obtenir une sortie lisible par l'homme:

du -sh directory_name

L'option -s Signifie qu'elle ne listera pas la taille de chaque sous-répertoire, seulement la taille totale.

245
sepp2k

GNU du prend un -b option.

Voir man page et info page pour plus d'aide:

-b, --bytes est équivalent à --apparent-size --block-size=1

7
user2573436

Bien que l'utilisation d'un package séparé tel que ncdu puisse fonctionner correctement, la même comparaison de nombreux dossiers peut être effectuée, dans une certaine mesure, en donnant simplement à du une liste de dossiers à dimensionner. Par exemple, pour comparer des répertoires de niveau supérieur sur votre système ...

cd /    
Sudo du -sh ./*
7
NFlourish
du -csh

-c produit le grand total

1
Kalpesh Soni

Essayer

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

Cela permet de trouver des répertoires volumineux à parcourir ensuite à l'aide de du -sh ./*

1
rollinjack

Vous pouvez utiliser "file-size.sh" à partir de l'awk bibliothèque Velour :

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

J'installe toujours le paquet "ncdu" et je 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 volume d'un répertoire.

Utilisation: Sudo ncdu / (Vous n'avez pas besoin de Sudo pour les dossiers sur lesquels vous disposez d'une autorisation de lecture).

Il faudra un certain temps pour analyser les statistiques d'utilisation du disque sur l'ensemble du système de fichiers. 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 aller plus loin ou plus haut dans le chemin numérisé. Vous pouvez également supprimer des éléments en appuyant sur D.

0
Etescartz

du -hd1

listera dans un format lisible par l'homme les tailles de tous les répertoires, par ex.

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

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

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

production

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

679445
0
Praveen Kumar BS

La question d'origine demandait la taille, mais ne précisait pas si c'était la taille sur le disque ou la taille réelle des données.

J'ai constaté que le calcul de "du" peut varier entre des serveurs ayant la même taille de partition et utilisant le même système de fichiers. Si les caractéristiques du système de fichiers diffèrent, cela a du sens, mais sinon je ne peux pas comprendre pourquoi. La réponse 'ls | awk "que Steven Penny a donnée donne une réponse plus cohérente, mais m'a quand même donné des résultats incohérents avec de très grandes listes de fichiers.

L'utilisation de 'find' a donné des résultats cohérents pour plus de 300 000 fichiers, même lorsque l'on compare un serveur utilisant XFS et un autre utilisant EXT4. Donc, si vous voulez connaître le nombre total d'octets de données dans tous les fichiers, je suggère que c'est un bon moyen de l'obtenir:

find /whatever/path -type f -printf "%s\n"|awk '{q+=$1} END {print q}'
0
Angelo Babudro

vous pouvez également 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 pour afficher les informations du répertoire, pas le contenu du répertoire, -h est pour afficher la taille au format lisible par l'huma.

0
fromnaboo