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";
46 my $cmd = "find \"$_\" -xdev -type f -size +$size -exec ls -lLG {} \\;";
54 #if (/\S+\s+\d+\s+(\S+)\s+(\d+).*\"\.\/(.*)\"/) {
55 if (/\S+\s+\d+\s+(\S+)\s+\S+ \S+\s+(\d+)\s+\S+\s+\d+\s+\S+\s+(\S+)/){
57 $info {filesize} = $2;
58 $info {filename} = $3;
68 my $lines = $ENV{LINES} || 24;
70 my $bytes_in_meg = 1048576;
75 my $result = GetOptions (
77 usage => sub { Usage },
78 verbose => sub { set_verbose },
79 debug => sub { set_debug },
84 my @dirs = @ARGV || '.';
85 my $size = $opts {size} ? $opts {size} * $bytes_in_meg / $block_size : 4096;
88 verbose "Directory:\t$_"
91 verbose "Size:\t\t$size_in_meg Meg ($size blocks)";
92 verbose "Top:\t\t$top";
94 my $head = $top ? "cat" : "head -$top";
96 my @files = Bigfiles $size, @dirs;
102 print "${info {filesize}}\t${info {user}}\t${info {filename}}\n";