Comment connaître la taille d'un répertoire? Y compris les sous-répertoires et les fichiers.
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.
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 ./*
du -csh
-c produit le grand total
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 ./*
Vous pouvez utiliser "file-size.sh" à partir de l'awk bibliothèque Velour :
ls -ARgo "$@" | awk '{q += $3} END {print q}'
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.
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
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
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}'
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.