#!/usr/bin/perl -w use File::Find; die "$0 [dir]\n" unless @ARGV >= 1; my %size; my $count = $ARGV[0]; my $search = $ARGV[1] || $ENV{PWD}; find (sub {$size{$File::Find::name} = -s if -f;}, $search); my @sorted = sort {$size{$b} <=> $size{$a}} keys %size; splice @sorted, $count if @sorted > $count; printf "%10d %s\n", $size{$_}, $_ for @sorted