#!/usr/bin/perl -s $duwidth = 17; # width of sizes columns $dfwidth = 10; # width of diffs columns # dusumm - summarize the `du -s` output contained in the given files # Steve Kinzler, kinzler@cs.indiana.edu, Sep 90/Sep 00 # http://www.cs.indiana.edu/~kinzler/home.html#unixadm $usage = <) { chop; ($size, $file) = split(/\s+/, $_, 2); $files{$file}++; $table{$file, $ARGV} = $size; } $n = 0; foreach $du (@argv) { printf "%${dfwidth}s ", '+/-' if ! $d && $n++; printf "%${duwidth}s ", $du; } print "FILES\n"; foreach $file (sort keys %files) { $n = 0; foreach $du (@argv) { printf "%${dfwidth}d ", $table{$file, $du} - $prev if ! $d && $n++; printf "%${duwidth}d ", $prev = $table{$file, $du}; $sum{$du} += $prev; } print "$file\n"; } $n = 0; foreach $du (@argv) { printf "%${dfwidth}d ", $sum{$du} - $prev if ! $d && $n++; printf "%${duwidth}s ", $prev = $sum{$du}; } print "TOTAL\n";