web-dev-qa-db-fra.com

Recherche de fichiers qui utilisent le plus d'espace disque

Est-il possible de répertorier les fichiers les plus volumineux sur mon disque dur? J'utilise fréquemment df -H pour afficher mon utilisation du disque, mais cela ne donne que le pourcentage plein, les 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 ces gros fichiers. La suppression d'un fichier de 1 Ko ne libère pas beaucoup d'espace, contrairement à la suppression d'un fichier de 100 Go. Existe-t-il un moyen de trier les fichiers sur le disque dur en fonction de leur taille?

Merci.

47
Andrew

Avec les outils standard disponibles:

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

Pour répertorier les répertoires les plus volumineux 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 et laisse le | head -n10, laissez-le simplement défiler hors de l'écran. La dernière ligne contient le plus grand fichier ou répertoire (arborescence).

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

N'oubliez pas que lorsque vous travaillez avec de gros volumes (NFS), vous pouvez entraîner une charge importante sur le backend de stockage (filer) lors de l'exécution de du sur de nombreux répertoires (sous). Dans ce cas, il vaut mieux envisager de définir quota sur le volume.

53
jippie

Ajout à la réponse de jippie

Pour répertorier les plus grands répertoires du répertoire actuel au 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 rend la lecture plus pratique :)

37
Jay Chakra

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

Un analyseur d'utilisation de disque avec une interface ncurses, destiné à être exécuté sur un serveur distant où vous n'avez pas une configuration gaphique complète, mais devez faire avec une simple connexion SSH. ncdu vise à être rapide, simple et facile à utiliser, et devrait pouvoir fonctionner dans n'importe quel environnement de type POSIX minimal avec ncurses installé.

14
Renan

(gnou)

du -max /dir | sort -nAffichera les gros fichiers ainsi que les gros répertoires, peut être utilisé pour identifier 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 arbre assez vieux: p)

4
Emmanuel

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

Applications> Accessoires> Analyseur d'utilisation de disque

dans cette fenêtre, cliquez sur le bouton "Scan Filesystem" dans la barre d'outils. après un court laps de temps (secondes), vous avez l'utilisation du disque de chaque répertoire et fichier.

2
Sam

Si vous préférez un outil graphique, theres https://github.com/shundhammer/qdirstat

1
Hannes Snögren

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
0
patseb

tapez la commande suivante

cd /

puis tapez

du -sh * | grep G

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

0
Dipak bodare