X-Git-Url: https://defaria.com/gitweb/?a=blobdiff_plain;f=bin%2Fbigfiles.pl;h=a020f19967c4e3f00fcbfa689dbca6bdb0f478e6;hb=6ee4bd4718471ce8ba4a8416a0bee09b082e0f13;hp=1918de1a90f08bb70e2ecf16956903f385852880;hpb=39beb2813d1d4dadff526699e48ab0852d4506c0;p=clearscm.git diff --git a/bin/bigfiles.pl b/bin/bigfiles.pl index 1918de1..a020f19 100755 --- a/bin/bigfiles.pl +++ b/bin/bigfiles.pl @@ -2,11 +2,11 @@ ################################################################################ # # File: $RCSfile: bigfiles.pl,v $ -# Revision: $Revision: 1.3 $ +# Revision: $Revision: 1.3 $ # Description: Reports large files # Author: Andrew@DeFaria.com # Created: Mon May 24 09:09:24 PDT 1999 -# Modified: $Date: 2011/04/18 05:15:29 $ +# Modified: $Date: 2011/04/18 05:15:29 $ # Language: Perl # # (c) Copyright 2001, ClearSCM, Inc., all rights reserved @@ -36,14 +36,16 @@ sub Usage { } # usage sub Bigfiles { - my $size = shift; - my @dirs = @_; + my $size = shift; + my @dirs = @_; my @files; foreach (@dirs) { next if !-d "$_"; - my $cmd = "find \"$_\" -xdev -type f -size +$size -exec ls -lLG {} \\;"; + + my $lsOpts = $ARCHITECTURE eq 'solaris' ? '-loL' : '-lLG'; + my $cmd = "find \"$_\" -xdev -type f -size +$size -exec ls $lsOpts {} \\;"; my @lines = `$cmd`; foreach (@lines) { @@ -52,11 +54,12 @@ sub Bigfiles { my %info; #if (/\S+\s+\d+\s+(\S+)\s+(\d+).*\"\.\/(.*)\"/) { - if (/\S+\s+\d+\s+(\S+)\s+\S+ \S+\s+(\d+)\s+\S+\s+\d+\s+\S+\s+(\S+)/){ - $info {user} = $1; - $info {filesize} = $2; - $info {filename} = $3; - push @files, \%info; + if (/\S+\s+\d+\s+(\S+)\s+(\d+)\s+\S+\s+\S+\s+\d+\s+(.*)/) { + $info {user} = $1; + $info {filesize} = $2; + $info {filename} = $3; + + push @files, \%info; } # if } # foreach } # foreach @@ -64,12 +67,14 @@ sub Bigfiles { return @files; } # Bigfiles -my $lines = defined $ENV {LINES} ? $ENV {LINES} :-24; -my $top = $lines - 2; -my $bytes_in_meg = 1048576; -my $block_size = 512; -my $size_in_meg = 1; -my %opts; +my $lines = $ENV{LINES} || 24; +my $top = $lines - 2; +my $bytes_in_meg = 1048576; +my $block_size = 512; +my $size_in_meg = 1; +my %opts = ( + size => 1 +); my $result = GetOptions ( \%opts, @@ -80,22 +85,26 @@ my $result = GetOptions ( 'size=i', ); -my @dirs = @ARGV ? @ARGV : "."; - -my $size = $opts {size} ? $opts {size} * $bytes_in_meg / $block_size : 4096; +my @dirs = @ARGV > 0 ? @ARGV : '.'; +my $size = $opts{size} ? $opts{size} * $bytes_in_meg / $block_size : 4096; +my @files; # Now do the find -verbose "Directory:\t$_" - foreach (@dirs); -verbose "Size:\t\t$size_in_meg Meg ($size blocks)"; -verbose "Top:\t\t$top"; +verbose "Directory:\t@dirs"; + +for (@dirs) { + verbose "Size:\t\t$opts{size} Meg ($size blocks)"; + verbose "Top:\t\t$top"; -my $head = $top ? "cat" : "head -$top"; + my $head = $top ? "cat" : "head -$top"; -my @files = Bigfiles $size, @dirs; + @files = Bigfiles $size, @dirs; +} # for -foreach (@files) { +for (sort {$b->{filesize} <=> $a->{filesize}} @files) { my %info = %{$_}; + last if $top-- == 0; + print "${info {filesize}}\t${info {user}}\t${info {filename}}\n"; -} # foreach +} # for