graphical representation of `du`

Австин Ким avstin at mail.ru
Sun Apr 3 19:26:41 UTC 2011


Sun, 03 Apr 2011 12:01:24 +0200 письмо от David Demelier <demelier.david at gmail.com>:

> On 02/04/2011 19:30, Chris Rees wrote:
> > On 2 April 2011 18:22, Chris Rees<utisoft at gmail.com>  wrote:
> >> On 2 April 2011 18:07, Mike Jeays<mike.jeays at rogers.com>  wrote:
> >>> On Sat, 2 Apr 2011 17:15:04 +0100
> >>> Chris Rees<utisoft at gmail.com>  wrote:
> >>>
> >>>> du -h . | awk '{a[i++]=$0} END {for (j=i-1; j>=0;) 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++]=$0} END {for (j=i-1; j>=0;) print a[j--] }' | sed
> >> -e 's,^[^1-9]*\([^___CTRL-V+TAB______]*\)____CTRL-V+TAB_____*\(.*\)$,\2
> >> \[\1\],;s,[^-][^/]*/,--,g;s,^,|,'
> >>
> >> That does exactly the same --  where 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! :-)
> 
> > Chris
> > _______________________________________________
> > freebsd-questions at freebsd.org mailing list
> > http://lists.freebsd.org/mailman/listinfo/freebsd-questions
> > To unsubscribe, send any mail to "freebsd-questions-unsubscribe at freebsd.org"
> 
> 
> -- 
> David Demelier
> _______________________________________________
> freebsd-questions at freebsd.org mailing list
> http://lists.freebsd.org/mailman/listinfo/freebsd-questions
> To unsubscribe, send any mail to "freebsd-questions-unsubscribe at freebsd.org"

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:  I'm writing this on a Mac OS X machine, not on a FreeBSD machine, at the moment, but hopefully this'll still work.  
Also, the following will mess up if you have directories whose names begin with "|".)

# dg:  `du--graphical'
# Usage:  dg [dir ...]
# Based on script by Chris Rees
# 1459 Sunday, 3 April 2011

dg ( ) {
  du -h "$@" |
    awk '{FS="\t"; print $2"\t["$1"]"}' |
    sort |
    sed -e 's:[^/]*/:| :g' -e 's:\(^\(| \)*\)| \([^|].*\):\1+-\3:'
  return
  }


More information about the freebsd-questions mailing list