2013-02-19 15:34:27 +0000 2013-02-19 15:34:27 +0000
104
104

Elke subdirectory grootte in een lijst formaat weergeven met één regel commando in Bash?

Ik wil een lijst van de mappen en hun grootte in een lijst formaat zoals je krijgt als je een ls -l doet.

Het probleem is dat er een éénregelig commando is dat dit kan doen? Ik zie dat anderen lange commando’s hebben om dit uit te voeren. Dat is gewoon te lang.

Welk commando kan dit doen of een combinatie van commando’s die makkelijk getypt kunnen worden? du -h geeft het, maar het geeft alle submappen weer wat niet is wat ik wil. alleen de huidige directories mappen.

Antwoorden (4)

126
126
126
2013-02-19 15:36:20 +0000

Probeer dit eens

du -h --max-depth=1

Uitvoer

oliver@home:/usr$ sudo du -h --max-depth=1
24M ./include
20M ./sbin
228M ./local
4.0K ./src
520M ./lib
8.0K ./games
1.3G ./share
255M ./bin
2.4G .

Alternatief

Als --max-depth=1 een beetje te lang is naar uw smaak, kunt u ook proberen gebruik te maken van:

du -h -s *

Dit gebruikt -s (--summarize) en zal standaard alleen de grootte van de map zelf afdrukken. Door alle elementen in de huidige werkdirectory door te geven (*), produceert het een vergelijkbare uitvoer als --max-depth=1 zou doen:

Uitvoer

oliver@cloud:/usr$ sudo du -h -s *
255M bin
8.0K games
24M include
520M lib
0 lib64
228M local
20M sbin
1.3G share
4.0K src

Het verschil is subtiel. De eerste aanpak toont de totale grootte van de huidige werkdirectory en de totale grootte van alle mappen die erin zitten… maar slechts tot een diepte van 1.

De tweede aanpak berekent de totale grootte van alle doorgegeven items individueel. Dus, het neemt de symlink lib64 mee in de uitvoer, maar sluit de verborgen items uit (waarvan de naam begint met een punt). Het mist ook de totale grootte van de huidige werkdirectory, omdat die niet als argument is doorgegeven.

79
79
79
2016-06-17 23:04:29 +0000

Je wilt waarschijnlijk de mappen zien gerangschikt op grootte:

$ du -hs * | sort -hr

856M lib
746M share
612M lib64
312M src
267M java
239M bin
179M sbin
173M local
93M i686-w64-mingw32
72M libexec
26M include
20M puppet
772K X11R6
20K man
4.0K games
4.0K etc
0 tmp
6
6
6
2014-11-06 14:52:37 +0000

Print de grootte van alle bestanden, mappen en verborgen bestanden op schijf:

el@dev /home/el $ du -sh `ls -a`
258M .
265M ..
4.0K .classpath
258M .git
4.0K .gitignore
9.0K nbactions.xml
12K README
20K .README.swp
4.0K run.sh
23K XmlPostPropagate.php
3
3
3
2016-06-12 12:29:56 +0000

De moeite waard om het NCurses Disk Usage shell commando te vermelden.

Ncdu is een schijfgebruik-analyser met een ncurses-interface. Het is ontworpen om ruimtevreters te vinden op een externe server waar je geen volledige grafische setup beschikbaar hebt, maar het is een nuttig gereedschap, zelfs op gewone desktopsystemen. Ncdu wil snel, eenvoudig en gemakkelijk te gebruiken zijn, en zou in iedere minimale POSIX-achtige omgeving met ncurses geïnstalleerd moeten kunnen draaien.