Comment trouver les plus grands répertoires ou les plus gros fichiers? [dupliquer]

33

Cette question a déjà une réponse ici:

Sous Linux, je cherche une commande pour répertorier le fichier le plus volumineux et / ou les répertoires les plus volumineux d'un répertoire.

Eric V
la source
L'outil le plus utile que j'ai trouvé est xdiskusage ( xdiskusage.sourceforge.net ). Il montre graphiquement l'emplacement des fichiers - par taille. Excellent outil! (et ça marche directement avec X11)
jcoppens
Comment ceci est-il dupliqué d'une question qui a été fermée comme hors sujet? Ça n'a pas de sens.
Kenorb

Réponses:

17

De n'importe quel répertoire:

du -a | sort -n -r

Brent Worden
la source
1
cela montre des fichiers individuels, mais la question concerne aussi les répertoires
knocte
du sans arguments récapitule l'utilisation du disque par répertoires. du avec -a produit les mêmes informations de répertoire et inclut l'utilisation du disque pour des fichiers individuels.
Brent Worden
ne peut pas faire le tri lorsque vous êtes à court d'espace: = (
Jonathan Henson
28

La commande suivante vous montre un niveau de répertoires et leur taille

du --max-depth = 1 / chemin | trier -r -k1,1n

Si l'un d'entre eux dépasse vraiment (le dernier de la liste est le plus gros dû à sort -r), vous relancez la commande dans ce répertoire, puis continuez jusqu'à ce que vous trouviez le répertoire / fichier incriminé.

Si vous ne voulez que les dix plus gros fichiers,

find / home -type f -exec du -s {} \; | trier -r -k1,1n | tête

Marcin
la source
le plus grand nombre finit en bas pour moi peu importe si j'ajoute sort -rou non. Y at-il un moyen d'obtenir le plus grand nombre au sommet?
squarecandy
Vous devez indiquer pour trier quelle colonne vous souhaitez trier et qu'elle est numérique (non alphanumérique). C'est ce que ferait -k1,1rn. Par défaut, le tri utilise le tri alphanumérique sur la première colonne.
Marcin
Oui, le tri est correct avec ça, mais c'est dans l'ordre croissant, peu importe le nombre, peu importe si j'inclus sortou sort -r. Est-ce que je ne comprends pas comment ça marche? Je suppose que ce n'est pas un gros problème. Votre exemple est très utile et m'a fourni les informations dont j'avais besoin.
squarecandy
2
Avec l' option sortI have ( sort (GNU coreutils) 8.13Ubuntu 12.04.3), l'option -rne fonctionne pas si elle -nsuit immédiatement -k( -k1,1n). Cette commande d'options fonctionne: sort -rnk1,1.
Pabouk
27

Un utilitaire appelé ncduvous donnera les informations que vous recherchez.

sudo apt-get install ncdu

Sous OS X, il peut être installé avec Homebrew:

brew install ncdu
David Pratt
la source
2
+1 Je n'avais jamais entendu parler de celui-ci auparavant - fonctionnait également très bien sur Mac.
Andrew E
C'est une solution bien plus intéressante que les deux réponses plus élevées.
AlexLordThorsen
C'est époustouflant. Suggérez ceci à toutes les autres réponses!
Allen Gingrich
4

du -sk * | trier -nr | tête -1

Cela montrera le plus grand répertoire / fichier dans un répertoire en ko. Si vous modifiez la valeur de la tête, vous obtiendrez les x meilleurs fichiers / répertoires.

Sridharpp
la source
2

Ce post vous aidera bien:

cd /path/to/some/where
du -a /var | sort -n -r | head -n 10
du -hsx * | sort -rh | head -10
Matz
la source
2

La commande suivante renverra les 10 plus gros fichiers de /path

du -a -h / chemin | trier -h -r | tête -n 10

J'aime utiliser les -hoptions pour la lisibilité. Les deux duet ont sortbesoin d'avoir -h.

Jiang
la source
1

Utilisation

ls -A | xargs -I artifact du -ms artifact | sort -nr

Vous pouvez éventuellement ajouter un tuyau et utiliser head -5

Abhishek
la source
0

Utilisez du. Essayez ceci pour commander le résultat:

du | sort -n
Heisenbug
la source
0

Essayez la ligne suivante (affiche les 20 plus gros fichiers du répertoire en cours):

ls -1Rs | sed -e "s/^ *//" | grep "^[0-9]" | sort -nr | head -n20

ou avec des tailles lisibles par l'homme:

ls -1Rhs | sed -e "s/^ *//" | grep "^[0-9]" | sort -hr | head -n20

La deuxième commande pour fonctionner correctement sur OSX / BSD (comme ce sortn’est pas le cas -h), vous devez installer à sortpartir de coreutils.

Il est donc utile d’avoir ces alias dans vos fichiers rc (chaque fois que vous en avez besoin):

alias big='du -ah . | sort -rh | head -20'
alias big-files='ls -1Rhs | sed -e "s/^ *//" | grep "^[0-9]" | sort -hr | head -n20'
Kenorb
la source
-5
du -sh /path * | sort -nr | grep G

G pour GIG (pour éliminer les plus petits) fichiers / répertoires

clapier
la source
Ceci répertorie tous les fichiers et dossiers, en indiquant leur taille. Il ne trie pas la taille en octets K, M ou G, sauf si vous GREP comme vous l'avez montré
Canadian Luke REINSTATE MONICA
En outre, il trouvera n'importe quoi avec un Gdans le nom du fichier.
Kevin Panko