J'ai trouvé qu'il n'est pas facile d'obtenir la taille d'un répertoire dans Bash?
Je veux que lorsque je tape ls -<some options>
, il puisse lister toute la somme de la taille du fichier du répertoire et des fichiers en même temps et trier par ordre de taille.
Est-ce possible?
du
est la réponse.du
commande @KeithThompson @KitHo estime l'utilisation de l'espace fichier, vous ne pouvez donc pas l'utiliser si vous souhaitez obtenir la taille exacte.du
(au moins la version GNU coreutils) a probablement une option pour fournir les informations.Réponses:
Naviguez simplement vers le répertoire et exécutez la commande suivante:
OU ajoutez -h pour les tailles lisibles par l'homme et -r pour imprimer d'abord des répertoires / fichiers plus volumineux.
la source
du -h
exigesort -h
aussi, pour s'assurer que, disons981M
avant1.3G
; avecsort -n
seuls les chiffres seraient pris en compte et ils seraient dans le mauvais sens.-a
et utiliser--all
au lieu de--max-depth=1
teldu -a -h --all | sort -h
sort -h
ne fonctionne que sur la version GNU / Linux, pas de chance avec BSD / OS X.Apparemment, l'
--max-depth
option n'est pas dans la version Mac OS X de ladu
commande. Vous pouvez utiliser ce qui suit à la place.du -h -d 1 | sort -n
la source
(cela ne montrera pas les fichiers cachés (.dotfiles))
Utiliser
du -sm
pour les unités Mb, etc. J'utilise toujourscar la ligne totale (
-c
) finira en bas pour des raisons évidentes :)PS:
la source
du --max-depth=1|sort -n
oufind . -mindepth 1 -maxdepth 1|xargs du -s|sort -n
pour inclure des fichiers dotfiles aussi.find . -mindepth 1 -maxdepth 1 -print0 | xargs -0 du -s | sort -n
si certains des chemins trouvés peuvent contenir des espaces.sudo du -smch * | sort -h | tail
Commander
Production
Explication
du
affiche "utilisation du disque"h
est pour "lisible par l'homme" (à la fois en tri et en du)max-depth=0
signifie que ladu
taille des sous-dossiers ne sera pas affichée (supprimez-la si vous souhaitez afficher toutes les tailles de chaque fichier dans chaque sous-, sous-sous-dossier, ..., dossier)r
est pour "reverse" (le plus gros fichier en premier)ncdu
Quand je suis arrivé à cette question, je voulais nettoyer mon système de fichiers. L'outil de ligne de commande
ncdu
est bien mieux adapté à cette tâche.Installation sur Ubuntu:
Usage:
Tapez simplement
ncdu [path]
la ligne de commande. Après quelques secondes pour analyser le chemin, vous verrez quelque chose comme ceci:Supprimer l'élément actuellement sélectionné avec d, quitter avec CTRL+c
la source
ls -S
trie par taille. Ensuite, pour afficher la taille aussi,ls -lS
donne un affichage long (-l
), trié par taille (-S
). J'ajoute généralement-h
aussi, pour rendre les choses plus faciles à lire, doncls -lhS
,.la source
du
, semble que quelqu'un l'a posté. @sehe: Cela dépend de votre définition de réel - il montre la quantité d'espace que le répertoire utilise pour se stocker. (Il ne s'agit simplement pas d'ajouter la taille des sous-entrées.) Ce n'est pas un nombre aléatoire, et ce n'est pas toujours 4 Ko.Simple et rapide:
* nécessite GNU Parallel .
la source
Je pense que j'ai peut-être compris ce que vous voulez faire. Cela donnera une liste triée de tous les fichiers et de tous les répertoires, triés par taille de fichier et taille du contenu dans les répertoires.
la source
du
soit une option, cela vous donnera juste un résultat approximatif.[version améliorée]
Cela va être beaucoup plus rapide et précis que la version initiale ci-dessous et affichera la somme de toute la taille de fichier du répertoire actuel:
la
stat -c %s
commande sur un fichier retournera sa taille en octets. Latr
commande ici est utilisée pour surmonter lesxargs
limitations de la commande (apparemment, lexargs
fait de diviser les résultats sur plus de lignes, brisant la logique de ma commande). Par conséquent, iltr
faut remplacer le saut de ligne par le+
signe (plus).sed
a le seul but de supprimer le dernier+
signe de la chaîne résultante pour éviter les plaintes de la commande finalebc
(calculatrice de base) qui, comme d'habitude, fait le calcul.Performances: Je l'ai testé sur plusieurs répertoires et plus de ~ 150.000 fichiers en haut (le nombre actuel de fichiers de ma boite fedora 15) ayant ce que je crois être un résultat étonnant:
Juste au cas où vous voudriez faire une comparaison avec la
du -sb /
commande, elle affichera une estimation de l'utilisation du disque en octets (-b
option)Comme je m'y attendais, il est un peu plus grand que mon calcul de commande car l'
du
utilitaire renvoie l'espace alloué de chaque fichier et non l'espace réellement consommé.[version initiale]
Vous ne pouvez pas utiliser la
du
commande si vous avez besoin de connaître la taille de somme exacte de votre dossier car (comme indiqué dans la citation de la page de manuel)du
estime l'utilisation de l'espace fichier. Par conséquent, cela vous mènera à un résultat erroné, une approximation (peut-être proche de la taille de la somme mais très probablement supérieure à la taille réelle que vous recherchez).Je pense qu'il peut y avoir différentes façons de répondre à votre question, mais c'est la mienne:
Il trouve tous les fichiers sous. répertoire (changez avec le répertoire que vous voulez), les fichiers cachés sont également inclus et (en utilisant
xargs
) affiche leurs noms sur une seule ligne, puis produit une liste détaillée en utilisantls -l
. Cette sortie (parfois) énorme est redirigée vers la commande cut et seul le cinquième champ (-f5
), qui est la taille du fichier en octets, est repris et redirigé versxargs
ce qui produit à nouveau une seule ligne de tailles séparées par des blancs. Maintenant a lieu une magie sed qui remplace chaque espace vide par un signe plus (+
) et enfinbc
(calculatrice de base) fait le calcul.Il peut avoir besoin d'un réglage supplémentaire et vous pouvez avoir une
ls
commande se plaignant de la liste d'arguments trop longue.la source
Une autre solution simple.
le résultat ressemblera à
changer "du -s" en "du -sh" affichera une taille lisible par l'homme, mais nous ne pourrons pas trier dans cette méthode.
la source
vous pouvez utiliser ce qui suit pour lister les fichiers par taille du -h | sort -hr | plus ou du -h --max-depth = 0 * | sort -hr | plus
la source
J'ai tendance à utiliser du de manière simple.
Cela me donne une idée des répertoires qui consomment le plus d'espace. Je peux ensuite exécuter des recherches plus précises plus tard.
la source