[Moscow.pm] Get human-readable output from du, sorted by size:
Nikolay Mishin
mi на ya.ru
Чт Сен 29 00:11:05 PDT 2011
клевая замена для kKMGT ,правда, если ассоциировать с 00123, то, если будет файл - 0 размера, то он не попадет в итоговый список, поэтому пошла заморочка с отрицательными весами (http://ubuntuforums.org/showpost.php?p=9410815&postcount=9)
например:
ls -lAtrh
total 0
-rw-rw---- 1 rwaprd01 rwa 0 Sep 29 08:59 test
а результат скрипта:
du-s2
1K .
правда я только сейчас понял, что на du -h нулевые файлы вообще не показываются, только нулевые каталоги
так что этот вариант подходит
29.09.2011, 03:31, "Dmitry Karpich" <meettya на gmail.com>:
> Вот любители лишних телодвижений :)
>
> #!/bin/sh
> du -h |
> perl -e '
> print map { $_->[0] }
> sort { $b->[3] <=> $a->[3] || $b->[1] <=> $a->[1] }
> map { [ $_, /([\d.]+)(\w)/, $2 =~ tr/kKMGT/00123/r ] } <>
> ' $*
>
> как-то так, хотя общественность негодуе, эти однострочники write-only
>
> Митяй.
>
> On Sep 29, 2011, at 2:31 AM, Denis Evdokimov wrote:
>
>> Как и обещал, альтернативный вариант
>>
>> my $c = 1;
>> my %hum_comp = map {$_, $c*=1024} qw(K M G T P);
>> $hum_comp{''} = 1;
>> print map $_->[1], sort{$b->[0] <=> $a->[0]} map {/^(\d+(?>\.\d+)?)(\w?)/; [$1*$hum_comp{$2}, $_]} <>
>>
>> и чуть более сжатый
>> du -h | perl -e'%hc=map{$_,$a=$a?$a*1024:1}qw(K M G T);print map $_->[1],sort{$b->[0]<=>$a->[0]}map{/^(\d+(?>\.\d+)?)(\w?)/;[$1*$hc{$2},$_]}<>'
>> --
>> Moscow.pm mailing list
>> moscow-pm на pm.org | http://moscow.pm.org
> --
> Moscow.pm mailing list
> moscow-pm на pm.org | http://moscow.pm.org
--
Nikolay Mishin
Подробная информация о списке рассылки Moscow-pm