2 ################################################################################
4 # File: $RCSfile: bigfiles.pl,v $
5 # Revision: $Revision: 1.3 $
6 # Description: Reports large files
7 # Author: Andrew@DeFaria.com
8 # Created: Mon May 24 09:09:24 PDT 1999
9 # Modified: $Date: 2011/04/18 05:15:29 $
12 # (c) Copyright 2001, ClearSCM, Inc., all rights reserved
14 ################################################################################
19 use lib "$FindBin::Bin/../lib";
27 display "Usage: bigfiles: [ -verbose | -v ] [ -size | -s n ] [ <directory> ]";
28 display "\t\t[ -top n | -t n ] [ -notop | -not ]\n";
30 display " -size | -s n\tShow only files bigger then n Meg (default 1 Meg)";
31 display " -verbose | -v\tTurn on verbose mode (default verbose off)";
32 display " -top | -t n\tPrint out only the top n largest files (default LINES - 1)";
33 display " -notop|not\tPrint out all files (default top LINES - 1)";
34 display " <directory>\tDirectory paths to check";
47 my $lsOpts = $ARCHITECTURE eq 'solaris' ? '-loL' : '-lLG';
48 my $cmd = "find \"$_\" -xdev -type f -size +$size -exec ls $lsOpts {} \\;";
56 #if (/\S+\s+\d+\s+(\S+)\s+(\d+).*\"\.\/(.*)\"/) {
57 if (/\S+\s+\d+\s+(\S+)\s+(\d+)\s+\S+\s+\S+\s+\d+\s+(.*)/) {
59 $info {filesize} = $2;
60 $info {filename} = $3;
70 my $lines = $ENV{LINES} || 24;
72 my $bytes_in_meg = 1048576;
79 my $result = GetOptions (
81 usage => sub { Usage },
82 verbose => sub { set_verbose },
83 debug => sub { set_debug },
88 my @dirs = @ARGV > 0 ? @ARGV : '.';
89 my $size = $opts{size} ? $opts{size} * $bytes_in_meg / $block_size : 4096;
93 verbose "Directory:\t@dirs";
96 verbose "Size:\t\t$opts{size} Meg ($size blocks)";
97 verbose "Top:\t\t$top";
99 my $head = $top ? "cat" : "head -$top";
101 @files = Bigfiles $size, @dirs;
104 for (sort {$b->{filesize} <=> $a->{filesize}} @files) {
109 print "${info {filesize}}\t${info {user}}\t${info {filename}}\n";