it-swarm-eu.dev

Jak mohu vypočítat velikost adresáře?

Jak zjistit velikost adresáře? Včetně podadresářů a souborů.

189
Juanjo Conti
du -s directory_name

Nebo získat lidsky čitelný výstup:

du -sh directory_name

The -s volba znamená, že neuvádí velikost pro každý podadresář, pouze celkovou velikost.

245
sepp2k

GNU du trvá -b možnost.

Další nápovědu naleznete na stránce man a na stránce info =

-b, --bytes je ekvivalentní s --apparent-size --block-size=1

7
user2573436

Při použití samostatného balíčku, jako je ncdu, může fungovat dobře, stejné srovnání mnoha složek lze do určité míry provést pouhým poskytnutím seznamu složek, které se mají zvětšit. Například pro porovnání adresářů nejvyšší úrovně ve vašem systému ...

cd /    
Sudo du -sh ./*
7
NFlourish
du -csh

-c vytváří celkový součet

1
Kalpesh Soni

Snaž se

du -hax --max-depth=1 / | grep '[0-9]G' | sort -nr

To pomáhá najít velké adresáře, které se pak mohou prosévat pomocí du -sh ./*

1
rollinjack

Můžete použít "file-size.sh" z awk Velor knihovna :

ls -ARgo "[email protected]" | awk '{q += $3} END {print q}'
1
Steven Penny

Vždy instaluji balíček "ncdu" a zobrazuji všechny výstupy všech adresářů s grafickým znázorněním. Důvodem je to, že obvykle potřebuji vědět, co zabírá nejvíce místa na disku v mých počítačích, bez ohledu na to, kolik jednoho adresáře sečte.

Použití: Sudo ncdu / (Nepotřebujete Sudo pro složky, ke kterým máte oprávnění ke čtení).

Bude chvíli trvat, než se prohledají statistiky využití disku v celém systému souborů. Má grafické znázornění příkazového řádku Nice a zahrnoval navigaci pomocí klávesnice pomocí kláves se šipkami, jako je jít hlouběji nebo výše v skenované cestě. Položky můžete také odstranit stisknutím D.

0
Etescartz

du -hd1

bude v lidsky čitelném formátu zobrazovat velikosti všech adresářů, např.

656K    ./rubberband
2.2M    ./lame
652K    ./pkg-config
0
Boris Yakubchik

Snažil jsem se s příkazem níže, protože již byla poskytnuta nejlepší odpověď

Sudo find . -maxdepth 1 -exec du -shk {} \;| awk 'NR >1'| awk 'BEGIN{sum=1}{sum=sum+$1}END{print sum}'

výstup

 Sudo find . -maxdepth 1 -exec du -shk {} \;| awk 'NR >1'| awk 'BEGIN{sum=1}{sum=sum+$1}END{print sum}'

679445
0
Praveen Kumar BS

Původní otázka položila velikost, ale nespecifikovala, zda to byla velikost na disku nebo skutečná velikost dat.

Zjistil jsem, že výpočet 'du' se může lišit mezi servery s oddílem stejné velikosti pomocí stejného systému souborů. Pokud se vlastnosti souborového systému liší, má to smysl, ale jinak nedokážu přijít na to, proč. Odpověď 'ls | awk', kterou Steven Penny dal, dává konzistentnější odpověď, ale stále mi dávala nekonzistentní výsledky s velmi velkými seznamy souborů.

Použití 'find' poskytlo konzistentní výsledky pro 300 000+ souborů, dokonce i při porovnání jednoho serveru pomocí XFS a druhého pomocí EXT4. Takže pokud chcete znát celkový počet bajtů dat ve všech souborech, navrhuji, že je to dobrý způsob, jak to získat:

find /whatever/path -type f -printf "%s\n"|awk '{q+=$1} END {print q}'
0
Angelo Babudro

můžete také použít ls -ldh:

ls -ldh /etc drwxr-xr-x 145 root root 12K 2012-06-02 11:44 /etc

-l je pro dlouhý výpis; -d je pro zobrazení informací o adresáři, nikoli o obsahu adresáře, -h pro zobrazení velikosti ve formátu čitelném pro huma.

0
fromnaboo