Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 3 Apr 2011 20:57:24 +0100
From:      Chris Rees <utisoft@gmail.com>
To:        =?KOI8-R?B?4dfT1MnOIOvJzQ==?= <avstin@mail.ru>,  freebsd-questions@freebsd.org
Subject:   Re: Re[2]: graphical representation of `du`
Message-ID:  <BANLkTi=kj8-zRqtj_CZqw=zswcqQM38sOQ@mail.gmail.com>
In-Reply-To: <E1Q6SwY-0007EI-00.avstin-mail-ru@f23.mail.ru>
References:  <0DD2BF5C-7387-4AFA-BF43-B1683F3773E8@d3photography.com> <BANLkTik9f0BwY0wtwuLVJeKj5p6VpXzoWQ@mail.gmail.com> <4D984574.2050402@gmail.com> <E1Q6SwY-0007EI-00.avstin-mail-ru@f23.mail.ru>

next in thread | previous in thread | raw e-mail | index | archive | help
On 3 April 2011 20:26, =E1=D7=D3=D4=C9=CE =EB=C9=CD <avstin@mail.ru> wrote:
> Sun, 03 Apr 2011 12:01:24 +0200 =D0=C9=D3=D8=CD=CF =CF=D4 David Demelier =
<demelier.david@gmail.com>:
>
>> On 02/04/2011 19:30, Chris Rees wrote:
>> > On 2 April 2011 18:22, Chris Rees<utisoft@gmail.com> =9Awrote:
>> >> On 2 April 2011 18:07, Mike Jeays<mike.jeays@rogers.com> =9Awrote:
>> >>> On Sat, 2 Apr 2011 17:15:04 +0100
>> >>> Chris Rees<utisoft@gmail.com> =9Awrote:
>> >>>
>> >>>> du -h . | awk '{a[i++]=3D$0} END {for (j=3Di-1; j>=3D0;) print a[j-=
-] }' |
>> >>>> awk '{print($2" ["$1"]");}' | sed -e 's,[^-][^/]*/,--,g' -e 's,^,|,=
'
>> >>>
>> >>>
>> >>> I confess to being impressed...
>> >>>
>> >>
>> >> Yeah, but perhaps I should have used sed instead of the second awk;
>> >> fewer processes:
>> >>
>> >> du -h | awk '{a[i++]=3D$0} END {for (j=3Di-1; j>=3D0;) print a[j--] }=
' | sed
>> >> -e 's,^[^1-9]*\([^___CTRL-V+TAB______]*\)____CTRL-V+TAB_____*\(.*\)$,=
\2
>> >> \[\1\],;s,[^-][^/]*/,--,g;s,^,|,'
>> >>
>> >> That does exactly the same -- =9Awhere I've put ____CTRL-V+TAB______ =
you
>> >> have to type Ctrl-V, then a literal [::tab::] key; BSD sed doesn't do
>> >> \t.
>> >>
>> >> Chris
>> >>
>> >
>> > Final version:
>> >
>> > http://www.bayofrum.net/~crees/graphical_du.sh
>> >
>> > Maybe I should port it...
>> >
>>
>> Thanks! This rocks! :-)
>>
>
> What a fun thread :)
>
> Here's my two cents, written as an sh(1) function that you can tack on to=
 the end of your .profile or .shrc:
> (Caveats: =9AI'm writing this on a Mac OS X machine, not on a FreeBSD mac=
hine, at the moment, but hopefully this'll still work.
> Also, the following will mess up if you have directories whose names begi=
n with "|".)
>
> # dg: =9A`du--graphical'
> # Usage: =9Adg [dir ...]
> # Based on script by Chris Rees
> # 1459 Sunday, 3 April 2011
>
> dg ( ) {
> =9Adu -h "$@" |
> =9A =9Aawk '{FS=3D"\t"; print $2"\t["$1"]"}' |
> =9A =9Asort |
> =9A =9Ased -e 's:[^/]*/:| :g' -e 's:\(^\(| \)*\)| \([^|].*\):\1+-\3:'
> =9Areturn
> =9A}

I used the awk a[i++]=3D$0} END {for (j=3Di-1; j>=3D0;) print a[j--]  etc t=
o
reverse the order, rather than alphabetise it because it's quicker:

$ du -h . | time sort >/dev/null 2>time
$ cat time
        8.17 real         0.03 user         0.00 sys
$ du -h . | time awk '{a[i++]=3D$2} END { for (j=3Di-1; j>=3D0;) print
a[j--] }' >/dev/null 2>time2
$ cat time2
        7.77 real         0.14 user         0.00 sys

YMMV of course!

Chris



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?BANLkTi=kj8-zRqtj_CZqw=zswcqQM38sOQ>