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.


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.


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 :)


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é.


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)


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.



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

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


-2

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

ls -lrS | tail -1

affiche le répertoire en cours, pas le disque dur entier.
slm

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.