Utilitaire Linux pour trouver les plus gros fichiers / répertoires [fermé]

134

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

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

Je sais que c'est possible dans KDE3, mais je préférerais ne pas le faire - KDE4 ou la ligne de commande sont préférés.

Robert Munteanu
la source
pour les utilisateurs de mac, je veux juste recommander ce logiciel gratuit appelé Disk Inventory X. Téléchargez-le ici derlien.com, il est simple à utiliser pour mac osx
Nimitack

Réponses:

131

Pour trouver les 10 plus gros 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 avec des espaces dans les noms et génère des tailles de fichier lisibles par l'homme dans la sortie. Le plus grand fichier répertorié en dernier. L'argument à 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. Le find -print0 | xargs -0utilise des délimiteurs nuls au lieu d'espaces, et le second xargs -I{}utilise des lignes nouvelles au lieu d'espaces pour terminer les éléments d'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
Sean
la source
Le fichier le plus volumineux apparaît en premier : find . -type f -print0 | xargs -0 du | sort -nr | head -10 | cut -f2 | xargs -I{} du -sh {}(ie utilisation sort -nr | head -10au lieu de sort -n | tail -10)
Sandra Rossi
200

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

Daenyth
la source
Oui et c'est petit!
Luke Stanley
5
J'aime ncdu. C'est l'une de mes trouvailles google préférées.
Rob
5
Sensationnel. comment je ne savais pas que cela existait? Merci!
pixel le
22
+1000 pour ncdu--- c'est comme htoppour l'espace disque. Super utile!
Noah Sussman
car il ne semble pas y avoir des drapeaux ni une option .config, voici la séquence de touches que vous aurez probablement taper à chaque fois que vous exécutez si vous aimez voir des fichiers et des dossiers se mêlent et les statistiques de pourcentage par rapport: [t] [g] [g].
Rymo
37

Pour un aperçu rapide:

du | sort -n

répertorie tous les répertoires avec le plus grand dernier.

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

ou encore, en évitant le redondant *:

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

répertorie tous les répertoires du répertoire en cours avec le dernier.

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

D'autres paramètres à définir sont disponibles si vous souhaitez suivre des liens symboliques (par défaut, les liens symboliques ne doivent pas être suivis) ou simplement afficher la taille du contenu du répertoire, à l'exclusion des 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 du répertoire.

mas
la source
3
Le * est-il vraiment nécessaire? N’inclut-il pas par défaut tous les fichiers du répertoire en cours?
Josh Hunt
Non, le * devrait être redondant. Je ne suis pas sûr si l'utiliser est le signe d'une bonne ou d'une mauvaise habitude. Merci de l'avoir signalé. J'ai modifié la réponse pour la rendre facultative.
Mas
C'est bien mais les résultats ne sont pas très amicaux. Je me tourne habituellement vers ceci:find {/path/to/directory} -type f -size +{file-size-in-kb}k -exec ls -lh {} \; | awk '{ print $8 ": " $5 }'
deed02392
roman # du --max-depth = 1 | sort -n du: option illégale - - utilisation: du [-A] [-H | -L | -P] [-a | -s | -d profondeur] [-c] [-l] [-h | -k | -m | -B bsize] [-n] [-x] [-I masque] [fichier ...]
holms
du -h --max-depth=1 2>/dev/null | sort -nr | grep -v ^0- un peu plus propre
Stuart Cardall
23

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

Capture d'écran de Filelight

Anton Geraschenko
la source
1
Filelight est mon outil de prédilection pour la taille des porcs spatiaux.
Ryan Thompson
Très bonne application. +1
rpax le
Visuellement, c'est artistiquement intriguant, mais intuitif? Rien qu'en la regardant, je n'ai aucune idée de ce que cela représente. Quelqu'un peut-il expliquer? Je suis allé sur le site et je n'ai vu aucune explication.
G-Man
Un outil similaire sur Mac est DaisyDisk, disponible à l' adresse daisydiskapp.com
computingfreak le
20

Filelight est préférable pour les utilisateurs de KDE, mais pour être complet (le titre de la question est général), je dois mentionner que Baobab est inclus dans Ubuntu, également appelé Analyseur de l'utilisation du disque:

entrez la description de l'image ici

Nicolas Raoul
la source
Si vous recherchez un équivalent de celui-ci sur la plate-forme Mac, accédez à DaisyDisk.
computingfreak
8

Un outil graphique, KDirStat , affiche les données à la fois sous forme de tableau et sous forme graphique. Vous pouvez voir très rapidement où la majeure partie de l'espace est utilisée.

entrez la description de l'image ici

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. C'est bien et beaucoup de gens l'ignorent probablement - je ne l'ai appris que moi-même récemment.

Jonik
la source
Merci d'avoir répondu. C'est exactement le même outil que j'avais dans KDE3, mais je suis passé à KDE 4.
Robert Munteanu Le
Êtes-vous sûr de ne pas pouvoir obtenir kdirstat pour KDE4?
Jonik
4
Kdirstat est tellement lent. Utilisez à la ncduplace.
Daenyth
Je viens d'appuyer sur ctrl + f pour trouver ncdu, et je constate que j'ai déjà voté @Daenyth
Rob
Sur KDE, cela s'appelle simplement k4dirstat .
phihag
5

Une combinaison est toujours le meilleur truc sous Unix.

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

Affiche la taille des répertoires en ko et trie pour obtenir le plus grand à la fin.
Tree-view aura cependant besoin de plus de ressources ... est-ce vraiment nécessaire?

Notez que cette analyse est imbriquée dans plusieurs répertoires; elle comptera à nouveau les sous-répertoires pour les répertoires les plus élevés et le répertoire de base .s'affichera à la fin sous la forme de la somme d'utilisation totale.

Vous pouvez toutefois utiliser un contrôle de profondeur sur la recherche pour effectuer une recherche à une profondeur spécifique.
Et, impliquez-vous davantage dans la numérisation ... en fonction de vos souhaits. Le contrôle de profondeur findavec -maxdepthet -mindepthpeut être limité à une profondeur de sous-répertoire spécifique.


Voici une variante raffinée pour votre problème trop long

find . -type d -exec du -sk {} \; |  sort -n -k 1
nik
la source
J'ai essayé cela et j'ai eu beaucoup de 'du: Tâche: Aucun fichier ou répertoire de ce type'
Josh Hunt le
Merci d'avoir répondu. Malheureusement, je reçois bash: / usr / bin / du: la liste d'arguments est trop longue
Robert Munteanu, le
3

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

texte alternatif

Dennis Williamson
la source
2

Bien que cela ne vous donne pas une sortie imbriquée comme ça, essayez du

du -h /path/to/dir/

Exécuter cela sur mon dossier Documents génère les éléments suivants:

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 dirigeant vers sort

du /path/to/dir | sort -n
Josh Hunt
la source
Merci, mais cela ne montre pas correctement quels répertoires sont les plus grands. Si je le lance dans mon répertoire personnel, la sortie est inutilisable.
Robert Munteanu
1

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!

Kam
la source
2
Bien que le site Web lié donne des instructions, il est préférable de paraphraser puis de faire référence au site externe (qui ressemble quand même à un blog personnel). Cela empêchera le lien de pourrir et aidera plus de personnes sur ce site
Canadian Luke
1
Le lien est cassé?
Danijel
1

Bien qu'il soit avantageux de connaître le pourcentage d'utilisation de chaque fichier / répertoire sur le disque, la plupart du temps, il est suffisant de connaître les fichiers / répertoires les plus volumineux du disque.

Donc mon préféré est ceci:

# 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
trante
la source
1

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

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

Les 25 premiers fichiers seront triés en fonction de leur taille via la commande "sort -nr -k5".

xpros
la source
1

Une autre alternative est ageu, qui décompose l’espace disque par le dernier accès, ce qui facilite la localisation des fichiers gaspillant de l’espace.

Il fonctionne même sur un serveur sans X Windows en servant des pages Web temporaires afin 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 saisir sur la ligne de commande du serveur.

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

Ceci imprime le nom d'utilisateur, le mot de passe et l'URL avec lesquels vous pouvez accéder à la "GUI" et parcourir les résultats. Une fois terminé, terminez ageduavec Ctrl+Dsur le serveur.

Bastiaan
la source
0
du -chs /*

Vous montrera une liste du répertoire racine.

RusAlex
la source
0

Pour compléter un peu plus la liste, j’ajoute mon analyseur d’utilisation du disque préféré, à savoir xdiskusage.

L’interface graphique me rappelle d’autres bons vieux utilitaires X, rapides et sans fioritures, mais vous pouvez néanmoins naviguer facilement dans la hiérarchie et disposer de quelques options d’affichage:

$ xdiskusage /usr

entrez la description de l'image ici

mpy
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