Existuje jednoduchý příkaz k zobrazení celkové agregované velikosti (využití disku) všech souborů v adresáři (složce)?
Vyzkoušel jsem je a nedělají, co chci:
ls -l
, které zobrazuje pouze velikost jednotlivých souborů v adresáři, anidf -h
, které zobrazuje pouze volné a použité místo na mých discích.Příkaz du
"shrnuje využití disku každého SOUBORU rekurzivně pro adresáře," např.
du -hs /path/to/directory
-h
Má čísla "lidsky číst", např. získejte 140M
namísto 143260
(velikost v KBytech)-s
Je pro shrnutí (v opačném případě dostanete nejen velikost složky, ale také za všechno in složku zvlášť)Když používáte -h
, Můžete třídit lidské čitelné hodnoty pomocí
du -h | sort -h
Příznak -h
Na sort
bude brát v úvahu hodnoty velikosti „Čitelné pro člověka“.
Pokud se chcete vyhnout rekurzivnímu výpisu všech souborů a adresářů, můžete zadat parametr --max-depth
, Abyste omezili počet zobrazovaných položek. Nejčastěji --max-depth=1
du -h --max-depth=1 /path/to/directory
Nedávno jsem našel skvělý interaktivní nástroj založený na ncurses, který vám rychle poskytne přehled o velikostech adresářů. Hledal tento druh nástroje po celá léta.
Ber to jako baobab pro příkazový řádek:
apt-get install ncdu
Toto vyhledá velikost rekurzivně a umístí ji vedle názvu každé složky, spolu s celkovou velikostí dole, vše v lidském formátu
du -hsc *
Níže uvádíme, co používám k tisku celkové velikosti, složky a velikosti souboru:
$ du -sch /home/vivek/* | sort -rh
------------------------------------------------------------
-c, --total
produce a grand total
-h, --human-readable
print sizes in human readable format (e.g., 1K 234M 2G)
-s, --summarize
display only a total for each argument
-------------------------------------------------------------
-h, --human-numeric-sort
compare human readable numbers (e.g., 2K 1G)
-r, --reverse
reverse the result of comparisons
70M total
69M /home/vivek/Downloads/gatling-charts-highcharts-bundle-2.2.2/lib
992K /home/vivek/Downloads/gatling-charts-highcharts-bundle-2.2.2/results
292K /home/vivek/Downloads/gatling-charts-highcharts-bundle-2.2.2/target
52K /home/vivek/Downloads/gatling-charts-highcharts-bundle-2.2.2/user-files
tree
je další užitečný příkaz pro tuto úlohu:
Stačí nainstalovat přes Sudo apt-get install tree
a zadejte následující:
tree --du -h /path/to/directory
...
...
33.7M used in 0 directories, 25 files
Od strom člověka :
-h Print the size of each file but in a more human readable way, e.g. appending a size letter for kilo‐
bytes (K), megabytes (M), gigabytes (G), terabytes (T), petabytes (P) and exabytes (E).
--du For each directory report its size as the accumulation of sizes of all its files and sub-directories
(and their files, and so on). The total amount of used space is also given in the final report (like
the 'du -c' command.)
Z odpovědí bylo zřejmé, že du
je nástroj k nalezení celkové velikosti adresáře. Je však třeba zvážit několik faktorů:
Výstup du
může být někdy zavádějící, protože vykazuje prostor přidělený souborovým systémem, který se může lišit od součtu velikostí jednotlivých souborů. Souborový systém obvykle přiděluje souboru 4096 bytů, i když jste do něj uložili pouze jeden znak!
Rozdíly výstupů díky výkonu 2 a výkonu 10 jednotek. The -h
přepněte na du
rozdělí počet bytů 2 ^ 10 (1024), 2 ^ 20 (1048576) atd., aby poskytl lidsky čitelný výstup. Mnoho lidí by mohlo být více zvyklých vidět síly 10 (např. 1K = 1000, 1M = 1000000) a výsledek by byl překvapen.
Chcete-li najít celkový součet velikostí všech souborů v adresáři, v bajtech, proveďte následující kroky:
find <dir> -ls | awk '{sum += $7} END {print sum}'
Příklad:
$ du -s -B 1
255729664
$ find . -ls | awk '{sum += $7} END {print sum}'
249008169
Pouze velikost adresáře ve formátu, který lze číst, použijte následující:
du -hs directoryname
Pravděpodobně to není ve správné části, ale z příkazového řádku můžete zkusit:
ls -sh filename
The -s
je velikost a -h
je člověk čitelný.
Použijte -l
pro zobrazení v seznamu ls
, jako níže:
ls -shl
du /foldername
je standardní příkaz znát velikost složky. Nejlepší možností je najít možnosti čtením manuálové stránky:
man du
Před použitím příkazu byste si měli přečíst manuálovou stránku (k dispozici online ).
Zde je skript POSIX, který bude fungovat s:
#!/bin/sh
ls -ARgo "[email protected]" | awk '{q += $3} END {print q}'
Pokud má požadovaný adresář mnoho podadresářů, použijte následující:
$ cd ~/your/target/directory
$ du -csh
-c, - celkový součet
- s, --summarize zobrazí pouze součet pro každý argument
- h, - lidské velikosti čitelné v lidském formátu (např. 1K 234M 2G)
což by pak vytvořilo celkové využití paměti všemi soubory/složkami v aktuálním adresáři.