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.


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

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.


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.


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


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


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.


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

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


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

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!


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

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


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.


0
du -chs /*

Vous montrera une liste du répertoire racine.


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


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