J'ai besoin d'une liste de résultats lisibles par l'homme.
Cependant, l' du
option "trier par taille" sort
n'est pas disponible et la tuyauterie to ne fonctionne pas avec l'indicateur lisible par l'homme.
Par exemple, en cours d'exécution:
du | sort -n -r
Produit une utilisation du disque trié par taille (décroissant):
du |sort -n -r
65108 .
61508 ./dir3
2056 ./dir4
1032 ./dir1
508 ./dir2
Cependant, l’exécuter avec le drapeau lisible par l’homme ne trie pas correctement:
du -h | sort -n -r
508K ./dir2
64M .
61M ./dir3
2.1M ./dir4
1.1M ./dir1
Est-ce que quelqu'un connaît un moyen de trier du -h
par taille?
du
mais ajoutez le -h à lasort
commande. Vous pouvez ajouter-rh
les plus gros en premier dans le fichier, sinon, vous deveztail
voir l'espace.Réponses:
Depuis GNU, coreutils 7.5, publié en août 2009,
sort
autorise un-h
paramètre permettant des suffixes numériques du type produit pardu -h
:Si vous utilisez un type qui ne prend pas en charge
-h
, vous pouvez installer GNU Coreutils. Par exemple, sur un Mac OS X plus ancien:De
sort
manuel :-h, --human-numeric-sort compare human readable numbers (e.g., 2K 1G)
la source
du -BM | sort -nr
comme solution de contournement - c’est assez lisible par l’homme et il est trié, si quelqu'un est coincé avec des coreutils plus anciens.du -hs * | gsort -h
du -BM
tout en mégaoctets, de sorte qu'un fichier de 168 Ko s'affiche en réalité sous la forme 0M. À moins qu'il y ait un autre écart de version que je ne sache pas. Ma version dedu
n'affiche que les valeurs en mégaoctets.la source
@ Douglas Leeder, une autre réponse: triez la sortie lisible par l'homme de du -h à l'aide d'un autre outil. Comme Perl!
Divisé en deux lignes pour s'adapter à l'écran. Vous pouvez l'utiliser de cette façon ou en faire une ligne, cela fonctionnera dans les deux cas.
Sortie:
EDIT: Après quelques parties de golf à PerlMonks , le résultat final est le suivant:
la source
stderr
cardie
vous pouvez la modifier pour la rendre affichéestdout
.die
en unprint
et il ira àstdout
. C'est juste deux autres personnages.Ncdu est un outil extrêmement utile que j’utilise, qui est conçu pour rechercher ces dossiers et fichiers très chargés d’ usage disque, et pour les supprimer. Il est basé sur la console, rapide et léger, et propose des packages pour toutes les distributions principales.
la source
du
, si vous voulez juste identifier les grands annuaires.la source
du -k --total
, donne une erreur à la findu: cannot access 'total': No such file or directory
head
en ajoutant `| tête -50` à la fin.Autant que je sache, vous avez trois options:
du
pour trier avant l'affichage.sort
pour prendre en charge les tailles humaines pour le tri numérique.Vous pouvez également faire
du -k
et vivre avec des tailles en KiB.Pour l'option 3, vous pouvez utiliser le script suivant:
la source
J'ai eu ce problème aussi et j'utilise actuellement une solution de contournement:
Cela ne produira pas de valeurs mises à l'échelle, mais produira toujours la taille en mégaoctets. C'est moins que parfait, mais pour moi c'est mieux que rien (ou afficher la taille en octets).
la source
Trouvé cette annonce ailleurs. Par conséquent, ce script shell fera ce que vous voulez sans tout appeler
du
deux fois. Il utiliseawk
pour convertir les octets bruts en un format lisible par l’homme. Bien entendu, le formatage est légèrement différent (tout est imprimé avec une précision d'une décimale).Exécuter ceci dans mon
.vim
répertoire donne:(J'espère que 3,6 millions de combinaisons de couleurs ne sont pas excessives.)
la source
Cette version utilise
awk
pour créer des colonnes supplémentaires pour les clés de tri. Il appelle seulementdu
une fois. La sortie devrait ressembler exactementdu
.Je l'ai divisé en plusieurs lignes, mais il peut être recombiné en une ligne.
Explication:
Essayez-le sans la
cut
commande pour voir ce qu'il fait.Voici une version qui fait le tri dans le script AWK et qui n’a pas besoin de
cut
:la source
du -sh *
afficher uniquement les fichiers et les répertoires immédiats sans descente récursive.Voici un exemple montrant les répertoires sous une forme résumée plus compacte. Il gère les espaces dans le répertoire / noms de fichiers.
la source
trier les fichiers par taille en Mo
la source
J'ai un wrapper python simple mais utile pour du appelé dutop . Notez que nous (responsables de la maintenance de coreutils) envisage d’ajouter la fonctionnalité à trier pour trier directement la sortie "humaine".
la source
sort
drapeau)En ai un autre:
Je commence à aimer Perl. Vous pourriez avoir à faire un
première. Pour tous les hackers de Perl: Oui, je sais que le tri peut également se faire en Perl. Probablement le du part aussi.
la source
Ce bout de code était sans vergogne de la part de Jean-Pierre à l' adresse http://www.unix.com/shell-programming-scripting/32555-du-h-sort.html . Y a-t-il un moyen de mieux le créditer?
la source
23423423432423
Utilisez le drapeau "-g"
Et sur mon répertoire / usr / local, le résultat est le suivant:
la source
Un autre:
la source
Voici la méthode simple que j'utilise, très faible utilisation des ressources et obtenant ce dont vous avez besoin:
la source
Trouvé celui-ci en ligne ... semble fonctionner correctement
la source
J'ai appris awk en concoctant cet exemple hier. Cela a pris du temps, mais c'était très amusant et j'ai appris à utiliser awk.
Il ne fonctionne qu'une fois, et son rendement est très proche de celui de -h
Il montre des nombres inférieurs à 10 avec une décimale.
la source
du -cka --max-depth = 1 / var / log | trier -rn | tête -10 | awk '{print ($ 1) / 1024, "MB", $ 2'}
la source
Si vous devez gérer des espaces, vous pouvez utiliser les méthodes suivantes
L'instruction sed supplémentaire aidera à résoudre les problèmes liés aux dossiers portant des noms tels que Support technique.
la source
Voilà:
la source
http://dev.yorhel.nl/ncdu
commande: ncdu
Navigation dans les répertoires, tri (nom et taille), graphique, lisible par l'homme, etc ...
la source
Une autre
awk
solution -la source
J'utilisais la solution fournie par @ptman, mais un changement de serveur récent l'a rendue inutilisable. Au lieu de cela, j'utilise le script bash suivant:
la source
du -d 1
syntaxe BSD est supportée par GNU du depuis la sortie de coreutils 8.6 en 2010 (bien que sa première disponibilité Red Hat soit RHEL 7 en 2014), vous n’avez donc plus besoin de cette solution--maxdepth=1
. Je n'ai découvert cela récemment que moi-même.la source
Il y a beaucoup de réponses ici, dont beaucoup sont des doublons. Je vois trois tendances: passer d'un second appel à un autre, utiliser un code shell / awk compliqué et utiliser d'autres langages.
Voici une solution compatible POSIX utilisant du et awk qui devrait fonctionner sur tous les systèmes.
J'ai adopté une approche légèrement différente, en ajoutant
-x
pour nous assurer de rester sur le même système de fichiers (je n'ai besoin de cette opération que lorsque je manque d'espace disque, alors pourquoi supprimer les éléments que j'ai montés dans cet arbre FS ou déplacés et symlinked back?) et l’affichage des unités constantes pour faciliter l’analyse visuelle. Dans ce cas, je choisis généralement de ne pas trier pour mieux voir la structure hiérarchique.(Puisqu'il s'agit d'unités cohérentes, vous pouvez alors ajouter
| sort -n
si vous voulez vraiment trier les résultats.)Cela filtre tout répertoire dont le contenu (cumulatif) ne dépasse pas 512 Mo, puis affiche les tailles en giga-octets. Par défaut, du utilise une taille de bloc de 512 octets (si l'état de awk de 2 20 blocs est 512Mo et son 2 21 diviseur convertit les unités GB - nous pourrions utiliser
du -kx
avec$1 > 512*1024
ets/1024^2
d'être plus lisible par l' homme). Dans la condition awk, nous avons définis
la taille pour pouvoir la supprimer de la ligne ($0
). Ceci conserve le délimiteur (qui est réduit à un seul espace), ainsi la finale%s
représente un espace puis le nom du répertoire agrégé.%7s
aligne la%.2f
taille arrondie en Go (augmentez à%8s
si vous avez> 10 To).Contrairement à la plupart des solutions proposées ici, cela prend correctement en charge les répertoires avec des espaces dans leurs noms (même si chaque solution, y compris celle-ci, manipulera mal les noms de répertoires contenant des sauts de ligne).
la source
Au moins avec les outils habituels, cela sera difficile à cause du format dans lequel les nombres sont lisibles par l'homme (notez que cette sorte fait un "bon travail" ici car elle trie les nombres - 508, 64, 61, 2, 2 - il ne peut tout simplement pas trier les nombres en virgule flottante avec un multiplicateur supplémentaire).
J'essaierais l'inverse - utiliser le résultat de "du | sort -n -r" et convertir ensuite les nombres en format lisible par l'homme avec un script ou un programme.
la source
Ce que vous pouvez essayer, c'est:
J'espère que ça t'as aidé.
la source
xargs
, ce formulaire était donc nécessaire. Toutefois, pour les fichiers contenant des espaces, vous devez définir IFS:IFS=$'\n'
la source