Trouver des fichiers qui utilisent le plus d'espace disque

43

Est-il possible de lister les fichiers les plus volumineux sur mon disque dur? J'utilise souvent df -Hpour afficher l' utilisation de mon disque, mais cela ne donne que le pourcentage de disques, le nombre de Go restants, etc.

Je fais beaucoup de calculs gourmands en données, avec un grand nombre de petits fichiers et un très petit nombre de très gros fichiers. Étant donné que la majeure partie de mon espace disque utilisé se trouve dans un très petit nombre de fichiers, il peut être difficile de localiser l'emplacement de ces fichiers volumineux. Supprimer un fichier de 1 ko ne libère pas beaucoup d’espace, mais supprimer un fichier de 100 Go le fait. Est-il possible de trier les fichiers sur le disque dur en fonction de leur taille?

Merci.

Andrew
la source
Pour 'tdu', voir aussi: unix.stackexchange.com/questions/425615/…
Joseph Paul

Réponses:

47

Avec les outils standard disponibles:

Pour répertorier les 10 plus gros fichiers du répertoire actuel: du . | sort -nr | head -n10

Pour répertorier les plus grands répertoires du répertoire actuel: du -s * | sort -nr | head -n10

UPDATE Ces jours-ci, j'utilise généralement un formulaire plus lisible (comme l'explique Jay Chakra dans une autre réponse), laissez-le | head -n10simplement défiler à l'écran. La dernière ligne contient le fichier ou le répertoire le plus volumineux (l'arborescence).

Parfois, par exemple. Lorsque vous avez beaucoup de points de montage dans le répertoire actuel, au lieu d’utiliser un -xou plusieurs --exclude=PATTERN, il est plus pratique de monter le système de fichiers sur un point de montage inutilisé ( souvent /mnt ) et de travailler à partir de ce point.

Notez que lorsque vous travaillez avec de gros volumes (NFS), vous pouvez entraîner une charge considérable sur le serveur de stockage (archiveur de fichiers) lorsque vous exécutez dubeaucoup de (sous) répertoires. Dans ce cas, il est préférable d’envisager de régler quotale volume.

jippie
la source
3
Pour votre première option, ne pouvez-vous pas simplement les énumérer ls -Sl | head?
Bernhard
Non, duparcourt l’ensemble de l’arborescence, alors que ls -S ne vérifie que le répertoire actuel.
Jippie
35

Ajout à la réponse de Jippie

Pour répertorier les répertoires les plus volumineux du répertoire en cours dans un format lisible par l'homme:

du -sh * | sort -hr | head -n10

Échantillon:

[~]$ du -sh * | sort -hr | head -n10
48M app
11M lib
6.7M    Vendor
1.1M    composer.phar
488K    phpcs.phar
488K    phpcbf.phar
72K doc
16K nbproject
8.0K    composer.lock
4.0K    README.md

Cela le rend plus pratique à lire :)

Jay Chakra
la source
14

Essayez ncdu, car cela peut vous donner un aperçu de l'utilisation du disque. De son site web:

Un analyseur d'utilisation du disque avec une interface ncurses, destiné à être exécuté sur un serveur distant où vous n'avez pas une configuration gaphique complète, mais plutôt une simple connexion SSH. ncdu se veut rapide, simple et facile à utiliser, et devrait pouvoir fonctionner dans n’importe quel environnement minimal semblable à POSIX où ncurses est installé.

Renan
la source
3

(gnou)

du -max /dir | sort -nAffiche les gros fichiers ainsi que les grands répertoires, peut être utilisé pour identifier les endroits où vous devez effectuer un nettoyage.

du -max | sort -n | tail -1000
...
46632   ./i386/update/SuSE-SLES/8/rpm/i586/kernel-source-2.4.21-138.i586.rpm
49816   ./UnitedLinux/apt/i386/RPMS.updates/k_debug-2.4.21-138.i586.rpm
679220  ./UnitedLinux/apt/i386/RPMS.updates
679248  ./UnitedLinux/apt/i386
679252  ./UnitedLinux/apt
691820  ./UnitedLinux/i586
691836  ./i386/update/SuSE-SLES/8/rpm/i586
695192  ./i386/update/SuSE-SLES/8/rpm
695788  ./i386/update/SuSE-SLES/8
695792  ./i386/update/SuSE-SLES
695804  ./i386/update
695808  ./i386
1390184 ./UnitedLinux

(Je sais que c'est un vieil arbre: p)

Emmanuel
la source
2

Il existe un moyen simple et efficace de trouver la taille de chaque fichier et répertoire dans Ubuntu:

Applications> Accessoires> Analyseur d'utilisation du disque

dans cette fenêtre, cliquez sur le bouton "Analyser le système de fichiers" dans la barre d'outils. après quelques instants (secondes), vous avez l’utilisation du disque de chaque répertoire et fichier.

Sam
la source
0

Vous pouvez essayer avec cette commande, elle listera tous les fichiers de plus de 20 Mo.

find / -type f -size +20000k -exec ls -lh {} \; 2> /dev/null \
  | awk '{ print $NF ": " $5 }'  | sort -hrk 2,2
patseb
la source
3
Si le fichier le plus volumineux de votre système de fichiers est de 20 Mo, vous ne manquerez probablement pas d'espace disque. Au moins avec toute HD fait ce millénaire
Kevin
Ce n'est qu'un exemple, vous y mettez ce que vous voulez. Il trouvera tout ce qui dépasse 20 Mo, pas seulement les fichiers de 20 Mo.
patseb
ls -lhalors sort?? ls -sou stat -c %bsont probablement mieux.
Mikel
Je ne comprends pas. Mon exemple utilise ls, et trie. Il voulait trouver des fichiers sur tout le disque, pas sur le répertoire.
patseb
0

tapez la commande suivante

cd /

puis tapez

du -sh * | grep G

La commande ci-dessus vous indique la quantité de mémoire utilisée par chaque répertoire. après cela, vous devez décider quel répertoire ou fichier vous souhaitez supprimer

Dipak Bodare
la source
-2

Vous pouvez essayer avec cette commande, il listera le gros fichier:

ls -lrS | tail -1
thiva
la source
affiche le répertoire en cours, pas le disque dur entier.
slm