Il y a beaucoup de réponses ici, dont beaucoup sont des doublons. Je vois trois tendances : le piping à travers un deuxième appel du, l'utilisation de code Shell/awk compliqué, et l'utilisation d'autres langages.
Voici un Solution conforme à POSIX en utilisant du y awk qui devrait fonctionner sur tous les systèmes.
J'ai adopté une approche légèrement différente, en ajoutant -x
pour s'assurer que nous restons sur le même système de fichiers (je n'ai besoin de cette opération que lorsque je suis à court d'espace disque, alors pourquoi éliminer les éléments que j'ai montés dans cette arborescence FS ou déplacés et remis en lien symbolique ? Dans ce cas, je choisis généralement no à trier pour que je puisse mieux voir la structure hiérarchique.
sudo du -x | awk '
$1 > 2^20 { s=$1; $1=""; printf "%7sG%s\n", sprintf("%.2f",s/2^21), $0 }'
(Puisque c'est en unités cohérentes, vous pouvez alors ajouter | sort -n
si vous voulez vraiment trier résultats).
Cela permet de filtrer tout répertoire dont le contenu (cumulé) ne dépasse pas 512 Mo, puis d'afficher les tailles en gigaoctets. Par défaut, du utilise une taille de bloc de 512 octets (donc la condition de l'awk de 2 20 est de 512MB et ses 2 21 le diviseur convertit les unités en GB - nous pourrions utiliser du -kx
con $1 > 512*1024
y s/1024^2
pour être plus lisible par l'homme). Dans la condition awk, nous définissons s
à la taille afin que nous puissions le retirer de la ligne ( $0
). Cela permet de conserver le délimiteur (qui est réduit à un seul espace), de sorte que la version finale du fichier %s
représente un espace et ensuite le nom du répertoire agrégé. %7s
aligne l'arrondi %.2f
Taille du Go (augmentation à %8s
si vous avez >10TB).
Contrairement à la plupart des solutions proposées ici, ceci supporte correctement les répertoires avec des espaces dans leurs noms (aunque chaque y compris celle-ci, traitera mal les noms de répertoire contenant des sauts de ligne).
0 votes
Voici une question très proche : serverfault.com/q/737537/35034
0 votes
Vous avez vu celui-ci ? unix.stackexchange.com/questions/4681/ Il s'agit d'un quasi-duplicata et il vaut de l'or. Vous faites une recherche normale
du
mais ajoutez le -h à l'optionsort
commande. Vous pouvez ajouter-rh
afin que les plus grands soient les premiers dans le fichier, sinon vous deveztail
pour voir les porcs de l'espace.0 votes
Voir aussi superuser.com/questions/300606/ pour une alternative plus conviviale (
ncdu
).