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 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
J'utilise toujours ncdu
. C'est interactif et très rapide.
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.
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 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:
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.
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.
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
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
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
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!
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.
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".
du -chs /*
Vous montrera une liste du répertoire racine.
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 installersort
à partir decoreutils
.
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'
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