Předání -s
do du
omezí výstup pouze na položky zadané na příkazovém řádku.
du -sh ~
Du vám zobrazí pouze součty za složku, nikoli za uživatele.
To by mohlo fungovat, pokud chcete celkovou velikost, řekněme, /home/example_user/
a pokud má v této složce soubory pouze ten example_user. Pokud mají v sobě soubory jiní uživatelé, nezíská se velikost všech souborů, které vlastníte, ale celková velikost všech souborů v této složce.
Chcete-li získat informace pro uživatele, buď:
- Pokud máte povolenou kvótu, použijte tyto příkazy.
- Použijte funkci find k procházení všemi adresáři, ve kterých chcete spočítat soubory. Použijte uid pouze k výběru souborů a ponechejte asociativní pole v awk, abyste spočítali součty.
find /path/to/search/ -user username_whos_files_to_count -type f -printf "%s\n" | awk '{t+=$1}END{print t}'
- První příkaz prohledává všechny soubory a adresáře v
/path/to/search/
. -type f
zajišťuje, že vybíráte pouze soubory, jinak počítáte i velikost adresářů. (Zkuste vytvořit prázdnou složku. Pravděpodobně zabere 4k místa na disku).-user username_whos_files_to_count
vybere pouze výsledky od jednoho uživatele-printf "%s\n"
vytiskne velikost.
Pokud právě spustíte první část tohoto, získáte seznam čísel. To jsou velikosti souborů. (Vše ostatní je odstraněno, pouze velikost je vytištěna díky příkazu %s print.)
Poté můžeme všechna tato čísla sečíst a získat souhrn. V příkladu je to provedeno pomocí awk.
Chcete-li najít veškeré použití konkrétním uživatelem, dobrý příkaz je:
find -user $USER -type f -exec du -chs {} +
Můžete dále upravovat v závislosti na konkrétních potřebách, například často chci shrnout použití podle složky a následující funguje dobře:
find . -maxdepth 1 -user $USER -type d ! -path . -exec du -chs {} +
To najde pouze adresáře na jedné úrovni, omezení podle uživatele, vyloučí nadřazený adresář a na konci vytiskne každý adresář a souhrn.