La canonada du -sk * | sort -nr llista tot el que hi ha al directori actual ordenat per l’espai que ocupa, de més gran a més petit. És el truc clàssic per trobar d’un cop d’ull quin directori o fitxer s’està menjant el disc.
Peça a peça
du -sk * | sort -nr
| Peça | Què fa |
|---|---|
du | Calcula l’espai que ocupen fitxers i directoris |
-s | Un sol total per a cada element, sense detallar-ne els subdirectoris |
-k | Mides en KiB (blocs de 1024 bytes), sempre amb números sense unitats |
* | El shell el substitueix per tots els fitxers i directoris del directori actual (excepte els ocults) |
sort | Ordena les línies |
-n | Ordre numèric: 800 va abans que 6644 (en ordre alfabètic seria al revés) |
-r | Ordre invers: de més gran a més petit |
La clau és -k: com que totes les mides surten en la mateixa unitat i sense lletres, sort -n les pot ordenar correctament.
Exemple
$ du -sk * | sort -nr
15360 fotos estiu
6644 dir1
800 musica
4 notes.txt
Les mides són en KiB: fotos estiu ocupa 15.360 KiB (15 MiB), dir1 uns 6,5 MiB, musica 800 KiB i notes.txt 4 KiB (el mínim que ocupa un fitxer petit en un sistema de fitxers amb blocs de 4 KiB).
Fixa’t que fotos estiu té un espai al nom i surt bé: du rep cada nom com un argument separat.
Variants útils
Només els 10 més grans:
du -sk * | sort -nr | head
Amb mides llegibles. Aquí no pots fer servir sort -n, perquè 15M i 800K no són números; GNU sort té l’opció -h, que entén les unitats:
$ du -sh * | sort -hr
15M fotos estiu
6.5M dir1
800K musica
4.0K notes.txt
Incloure-hi els fitxers i directoris ocults (els que comencen per punt):
du -sh .[!.]* * 2>/dev/null | sort -hr
O bé, en lloc de *, deixar que du recorri un sol nivell (inclou els ocults i el total del directori, .):
du -h --max-depth=1 | sort -hr
Ho tens explicat a du -h –max-depth=1 | sort.
Compte amb…
Argument list too long. En un directori amb desenes de milers de fitxers,*es pot convertir en una llista massa llarga per a la comanda. Llavors fes servirdu --max-depth=1.- Errors de permisos. Si analitzes directoris del sistema sense
sudo, veuràs moltsPermission deniedi els totals seran incomplets. Afegeix2>/dev/nullper amagar els missatges, o executa-ho ambsudo. - Altres discos muntats a dins. Si a sota hi ha un disc extern o una unitat de xarxa muntada,
dutambé la compta. Amb-xes queda al mateix sistema de fitxers.
Una alternativa interactiva: ncdu
Si has de fer neteja sovint, ncdu fa això mateix però de manera interactiva: navegues pels directoris amb les fletxes, ordenats per mida, i pots esborrar des d’allà mateix.
sudo apt install ncdu
ncdu -x /
Comandes relacionades
- du i du -sh: espai ocupat per directoris.
- du -k –max-depth=1 | sort | awk: el mateix, amb les mides en GiB.
- df: espai lliure de cada disc.
- ls -lSr | more: fitxers ordenats per mida.