web-dev-qa-db-fra.com

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

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.

131
Robert Munteanu

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 -0 utilise des délimiteurs nuls au lieu d'espaces, et le second xargs -I{} utilise des nouvelles lignes 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
130
Sean

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

199
Daenyth

Pour un aperçu rapide:

du | sort -n

liste 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 plus grand 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.

37
mas

Pour la plupart des choses, je préfère les outils 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.

Filelight screenshot

23
Anton Geraschenko

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 Baobab est inclus dans Ubuntu, également appelé Analyseur de l'utilisation du disque:

enter image description here

20
Nicolas Raoul

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.

 enter image description here

Je ne sais pas si c'est exactement l'outil de 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.

8
Jonik

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.
L’arborescence a cependant besoin de plus de ressources… est-ce vraiment nécessaire?

Notez que cette analyse est imbriquée dans plusieurs répertoires, de sorte qu'elle comptera à nouveau les sous-répertoires pour les répertoires les plus élevés et que le répertoire de base . apparaîtra à la fin en tant que 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 beaucoup plus dans la numérisation… en fonction de vos souhaits. Le contrôle de profondeur de find avec -maxdepth et -mindepth peut ê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
5
nik

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.

alt text

3
Dennis Williamson

Bien que cela ne vous donne pas une sortie imbriquée comme cela, 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
2
Josh Hunt

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
trante

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
Kam

Une autre alternative est ageed , 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 agedu avec Ctrl+D sur le serveur.

1
Bastiaan

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 la taille de ceux-ci via la commande piped "sort -nr -k5".

1
xpros
du -chs /*

Vous montrera une liste du répertoire racine.

0
RusAlex

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 fonctionnant correctement sur OSX/BSD (étant donné que sort n'a pas -h), vous devez installer sort à partir 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'
0
kenorb

Pour compléter un peu plus la liste, j’ajoute mon analyseur d’utilisation du disque préféré, qui est 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

enter image description here

0
mpy