it-swarm-eu.dev

Zvětšení velikosti pouze se soubory

Jak mohu získat velikost všech souborů a všech souborů ve svých podadresářích pomocí příkazu du.

Zkouším následující příkaz, abych získal velikost všech souborů (a souborů v podadresářích)

find . -type f | du -a

Vytiskne se však také velikost složek. Jak získám výpis velikostí všech souborů a souborů v podadresářích? Zkoušel jsem také exec flag ale nejsem si jistý, jak vložit výstup do jiného příkazu po provedení výsledků find do du.

Operační systém je AIX 6.1 s ksh Shell.

56
Shardul Upadhyay

Obvykle používám -exec nástroj. Takhle:

find . -type f -exec du -a {} +

Zkusil jsem to jak na bash, tak na ksh s GNU find. Nikdy jsem nezkoušel AIX, ale jsem si jist, že vaše verze find má nějaké -exec syntaxe.

Následující úryvek třídí seznam, největší první:

find . -type f -exec du -a {} + | sort -n -r | less
60
rahmu

Pokud máte nástroje GNU), zkuste to

find . -type f -print0 | du --files0-from=-
16
jw013

Obvykle používám:

find . -type f -print0 | xargs -r0 du -a

Xargs obvykle volá příkaz, i když nejsou předány žádné argumenty; xargs du </dev/null Bude stále volat, xargs -r du </dev/null Nebude volat du. Argument -0 Hledá null zakončené řetězce namísto zakončení nového řádku.

Potom obvykle přidám na konec | awk '{sum+=$1} END {print sum}', Abych získal součet.

9
Arcege

Zde je verze s dlouhými názvy parametrů a lidským tříděním.

find . -type f -exec du --human {} + | sort --human --reverse | head

Neviděl jsem ani potřebu -a/--all bude předáno uživateli du.

2
Tarrasch