2009-07-21 06:54:48 +0000 2009-07-21 06:54:48 +0000
134
134

Utilitaire Linux pour trouver les plus grands fichiers/répertoires

Je cherche un programme pour me montrer quels fichiers / répertoires occupent le plus d'espace, quelque chose comme ça :

74% music
 \- 60% music1
 \- 14% music2
12% code
13% other

Je sais que c'est possible en KDE3, mais je préfère ne pas le faire - KDE4 ou la ligne de commande sont préférables.

Réponses (16)

200
200
200
2010-07-07 15:31:29 +0000

J'utilise toujours ncdu. C'est interactif et très rapide.

131
131
131
2012-03-06 19:56:10 +0000

Pour trouver les 10 plus grands fichiers (linux/bash) :

find . -type f -print0 | xargs -0 du | sort -n | tail -10 | cut -f2 | xargs -I{} du -sh {}

Pour trouver les 10 plus grands répertoires :

find . -type d -print0 | xargs -0 du | sort -n | tail -10 | cut -f2 | xargs -I{} du -sh {}

La seule différence est -type {d:f}.

Gère les fichiers dont les noms contiennent des espaces et produit des fichiers de taille lisible par l'utilisateur. Le plus grand fichier est listé en dernier. L'argument à faire suivre est le nombre de résultats que vous voyez (ici les 10 plus grands).

Deux techniques sont utilisées pour gérer les espaces dans les noms de fichiers. La find -print0 | xargs -0 utilise des délimiteurs nuls au lieu d'espaces, et la seconde xargs -I{} utilise des nouvelles lignes au lieu d'espaces pour terminer les éléments en entrée.

exemple :

$ find . -type f -print0 | xargs -0 du | sort -n | tail -10 | cut -f2 | xargs -I{} du -sh {}

  76M ./snapshots/projects/weekly.1/onthisday/onthisday.tar.gz
  76M ./snapshots/projects/weekly.2/onthisday/onthisday.tar.gz
  76M ./snapshots/projects/weekly.3/onthisday/onthisday.tar.gz
  76M ./tmp/projects/onthisday/onthisday.tar.gz
  114M ./Dropbox/snapshots/weekly.tgz
  114M ./Dropbox/snapshots/daily.tgz
  114M ./Dropbox/snapshots/monthly.tgz
  117M ./Calibre Library/Robert Martin/cc.mobi
  159M ./.local/share/Trash/files/funky chicken.mpg
  346M ./Downloads/The Walking Dead S02E02 ... (dutch subs nl).avi
37
37
37
2009-07-21 07:19:02 +0000

Pour un aperçu rapide :

du | sort -n

liste tous les répertoires avec le plus grand en dernier.

du --max-depth=1 * | sort -n

ou, encore, en évitant les redondances * :

du --max-depth=1 | sort -n

liste tous les répertoires du répertoire courant avec le plus grand en dernier.

(le paramètre -n est nécessaire pour que le premier champ soit trié comme un nombre plutôt que comme du texte mais cela empêche d'utiliser le paramètre -h à du car nous avons besoin d'un nombre significatif pour le tri)

D'autres paramètres à du sont disponibles si vous voulez suivre des liens symboliques (la valeur par défaut est de ne pas suivre de liens symboliques) ou simplement afficher la taille du contenu du répertoire en excluant les sous-répertoires, par exemple. du peut même inclure dans la liste la date et l'heure de la dernière modification d'un fichier dans le répertoire.

23
23
23
2009-07-24 04:26:50 +0000

Pour la plupart des choses, je préfère les outils CLI, mais pour l'utilisation du lecteur, j'aime beaucoup filelight . La présentation est plus intuitive pour moi que tout autre outil de gestion de l'espace que j'ai vu.

20
20
20
2013-02-18 04:35:03 +0000

Filelight est meilleur pour les utilisateurs de KDE, mais par souci d'exhaustivité (le titre de la question est général), je dois mentionner que Baobab est inclus dans Ubuntu, alias Disk Usage Analyzer :

8
8
8
2009-07-22 10:00:12 +0000

Un outil GUI, * KDirStat **, présente les données sous forme de tableau et de graphique. Vous pouvez voir très rapidement où la plus grande partie de l'espace est utilisée.

Je ne suis pas sûr que ce soit exactement l'outil KDE que vous ne vouliez pas, mais je pense qu'il devrait quand même être mentionné dans une question comme celle-ci. Il est bon et beaucoup de gens ne le connaissent probablement pas - je ne l'ai moi-même appris que récemment.

5
5
5
2009-07-21 07:06:07 +0000

Une combinaison est toujours la meilleure astuce sur Unix.

du -sk $(find . -type d) | sort -n -k 1

affichera la taille des répertoires en Ko et fera un tri pour donner la plus grande à la fin.
Tree-view aura cependant besoin de plus de f… est-ce vraiment nécessaire ?

Notez que cette analyse est imbriquée entre les répertoires, elle comptera donc à nouveau les sous-répertoires pour les répertoires supérieurs et le répertoire de base . apparaîtra à la fin comme la somme totale d'utilisation.

Vous pouvez cependant utiliser un contrôle de profondeur sur la recherche pour effectuer une recherche à une profondeur spécifique.
Et, en fait, impliquez-vous beaucoup plus dans votre recherche… en fonction de ce que vous voulez. Le contrôle de profondeur de find avec -maxdepth et -mindepth peut se limiter à une profondeur spécifique de sous-répertoire.


Voici une variation raffinée pour votre problème arg-too-long

find . -type d -exec du -sk {} \; | sort -n -k 1
3
3
3
2009-07-21 11:35:45 +0000

J'aime gt5 . Vous pouvez naviguer dans l'arborescence et ouvrir des sous-répertoires pour obtenir plus de détails. Il utilise un navigateur web en mode texte, tel que lynx, pour afficher les résultats. Installez elinks pour obtenir les meilleurs résultats.

2
2
2
2009-07-21 07:00:04 +0000

Bien qu'il ne vous donne pas une sortie imbriquée comme ça, essayez du

du -h /path/to/dir/

L'exécution de cette fonction sur mon dossier Documents vous donne le résultat suivant :

josh-hunts-macbook:Documents joshhunt$ du -h
  0B ./Adobe Scripts
  0B ./Colloquy Transcripts
 23M ./Electronic Arts/The Sims 3/Custom Music
  0B ./Electronic Arts/The Sims 3/InstalledWorlds
364K ./Electronic Arts/The Sims 3/Library
 77M ./Electronic Arts/The Sims 3/Recorded Videos
101M ./Electronic Arts/The Sims 3/Saves
 40M ./Electronic Arts/The Sims 3/Screenshots
1.6M ./Electronic Arts/The Sims 3/Thumbnails
387M ./Electronic Arts/The Sims 3
387M ./Electronic Arts
984K ./English Advanced/Documents
1.8M ./English Advanced
  0B ./English Extension/Documents
212K ./English Extension
100K ./English Tutoring
5.6M ./IPT/Multimedia Assessment Task
720K ./IPT/Transaction Processing Systems
8.6M ./IPT
1.5M ./Job
432K ./Legal Studies/Crime
8.0K ./Legal Studies/Documents
144K ./Legal Studies/Family/PDFs
692K ./Legal Studies/Family
1.1M ./Legal Studies
380K ./Maths/Assessment Task 1
388K ./Maths
[...]

Ensuite, vous pouvez trier la sortie en la faisant passer dans sort

du /path/to/dir | sort -n
```.
1
1
1
2013-05-15 21:52:25 +0000

Bien qu'il soit utile de connaître le pourcentage d'utilisation de chaque fichier/répertoire sur le disque, il suffit la plupart du temps de connaître les plus grands fichiers et répertoires du disque.

Voici donc mon préféré :

# du -a | sort -n -r | head -n 20

Et la sortie est comme ça :

28626644 .
28052128 ./www
28044812 ./www/vhosts
28017860 ./www/vhosts/example.com
23317776 ./www/vhosts/example.com/httpdocs
23295012 ./www/vhosts/example.com/httpdocs/myfolder
23271868 ./www/vhosts/example.com/httpdocs/myfolder/temp
11619576 ./www/vhosts/example.com/httpdocs/myfolder/temp/main
11590700 ./www/vhosts/example.com/httpdocs/myfolder/temp/main/user
11564748 ./www/vhosts/example.com/httpdocs/myfolder/temp/others
4699852 ./www/vhosts/example.com/stats
4479728 ./www/vhosts/example.com/stats/logs
4437900 ./www/vhosts/example.com/stats/logs/access_log.processed
401848 ./lib
323432 ./lib/mysql
246828 ./lib/mysql/mydatabase
215680 ./www/vhosts/example.com/stats/webstat
182364 ./www/vhosts/example.com/httpdocs/tmp/aaa.sql
181304 ./www/vhosts/example.com/httpdocs/tmp/bbb.sql
181144 ./www/vhosts/example.com/httpdocs/tmp/ccc.sql
1
1
1
2012-09-06 05:27:20 +0000

Voici le script qui le fait pour vous automatiquement. http://www.thegeekscope.com/linux-script-to-find-largest-files/

Voici l'exemple de sortie du script:

**# sh get_largest_files.sh / 5**

[SIZE (BYTES)] [% OF DISK] [OWNER] [LAST MODIFIED ON] [FILE] 

56421808 0% root 2012-08-02 14:58:51 /usr/lib/locale/locale-archive
32464076 0% root 2008-09-18 18:06:28 /usr/lib/libgcj.so.7rh.0.0
29147136 0% root 2012-08-02 15:17:40 /var/lib/rpm/Packages
20278904 0% root 2008-12-09 13:57:01 /usr/lib/xulrunner-1.9/libxul.so
16001944 0% root 2012-08-02 15:02:36 /etc/selinux/targeted/modules/active/base.linked

Total disk size: 23792652288 Bytes
Total size occupied by these files: 154313868 Bytes [0% of Total Disc Space]

***Note: 0% represents less than 1%***

Vous pouvez trouver ce script très pratique et utile !

1
1
1
2014-05-29 03:39:47 +0000

Pour trouver les 25 premiers fichiers du répertoire courant et de ses sous-répertoires :

find . -type f -exec ls -al {} \; | sort -nr -k5 | head -n 25

The produira les 25 principaux fichiers en les triant en fonction de leur taille via la commande “sort -nr -k5”.

1
1
1
2015-04-10 12:07:49 +0000

Une autre alternative est agedu qui décompose l'espace disque en fonction du temps de dernier accès, ce qui permet de localiser plus facilement les fichiers qui gaspillent de l'espace.

Il fonctionne même sur un serveur sans X Windows en servant des pages web temporaires pour que l'utilisation puisse être analysée à distance, avec des graphiques. En supposant que l'adresse IP du serveur est 192.168.1.101, vous pouvez la taper sur la ligne de commande du serveur

agedu -s / -w --address 192.168.1.101:60870 --auth basic -R

Cela permet d'imprimer le nom d'utilisateur, le mot de passe et l'URL avec lesquels vous pouvez accéder à l’“interface graphique” et parcourir les résultats. Lorsque vous avez terminé, terminez agedu par Ctrl+D sur le serveur.

0
0
0
2010-07-07 11:05:40 +0000
du -chs /*

Vous montrera une liste du répertoire racine.

0
0
0
2013-08-18 12:36:57 +0000

Pour compléter un peu plus la liste, j'ajoute mon analyseur d'utilisation de disque préféré, qui est xdiskusage .

L'interface graphique me rappelle d'autres bons vieux utilitaires X, elle est rapide et pas boursouflée, mais vous pouvez néanmoins naviguer facilement dans la hiérarchie et avoir quelques options d'affichage :

$ xdiskusage /usr

0
0
0
2015-03-05 13:44:05 +0000

Essayez la ligne unique suivante (affiche les 20 plus gros fichiers dans le répertoire actuel) :

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 (car sort n'a pas -h), vous devez installer sort à partir de coreutils.

Donc ces alias sont utiles pour avoir 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'