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.
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
Pokud máte nástroje GNU), zkuste to
find . -type f -print0 | du --files0-from=-
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.
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
.