[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