Finding the size of a large file

Discussion in 'Perl Misc' started by John N., Aug 15, 2003.

  1. John N.

    John N. Guest

    I am new to Perl. I have a Sun box running Solaris 8 and the Perl that
    comes with the OS.

    I pulled some code off of Sun's site that searches a directory tree
    and finds big files. When I run the program it works except that it
    does not find files over 5 GB.

    I have done a few things to trouble shoot the code and I found that it
    fails in two places. On the line of "elsif ((-f _) && (! -l $path))"
    the file fails the -f switch test. When I do a ls -l on the directory
    it shows that the file is a normal file with the same rights as the
    other files in the directory. Then I took "-f _" logic check out and
    printed the result of the "$size = -s $path;" code and the -s returns
    a blank for the size.

    Do I have to do differant things with large files? Are there bugs or
    limitations on the -f and -s switches? How do I make the code work?

    Thanks for your help,

    John

    #
    # scan throught the directory tree
    #

    &traverse('.');

    sub traverse {
    local($dir) = shift;
    local($path);
    unless (opendir(DIR, $dir)) {
    warn "Can't open $dir\n";
    closedir(DIR);
    return;
    }
    foreach (readdir(DIR)) {
    next if $_ eq '.' || $_ eq '..';
    $path = "$dir/$_";
    if ((-d $path) && (! -l $path)) { # non-symlink dir, enter it
    &traverse($path);
    } elsif ((-f _) && (! -l $path)) { # plain file, but not a
    symlink
    $size = -s $path; # get the size in bytes
    $ksize = $size / 1000; # convert to megabytes
    if ($size > $minsize) {
    $age = -A $path; # get the age in days
    printf "%9d Kilobytes %4d days
    %s\n",$ksize,int($age),$path;
    }
    }
    }
    closedir(DIR);
    }
    John N., Aug 15, 2003
    #1
    1. Advertising

  2. "John N." wrote:
    >
    > I am new to Perl. I have a Sun box running Solaris 8 and the Perl that
    > comes with the OS.
    >
    > I pulled some code off of Sun's site that searches a directory tree
    > and finds big files. When I run the program it works except that it
    > does not find files over 5 GB.


    The largest number that can be held in a 32-bit integer
    (unsigned) is 4,294,967,295.

    That's 4.29+ Gig. Since you mention 5GB in your post,
    I'm thinking that the size is beyond what the code
    can handle.

    If I'm correct, then it's seeing that 5GB file as
    being 5,000,000,000 - 4,294,967,295 = 705,032,705
    or about 705MB. If you were searching for files
    larger than 700MB, this one should still show up.
    But if you're looking for files over 1GB, it won't.

    Mike
    Michael P. Broida, Aug 15, 2003
    #2
    1. Advertising

  3. John N. <> wrote:
    JN> I am new to Perl. I have a Sun box running Solaris 8 and the Perl that
    JN> comes with the OS.
    JN>
    JN> I pulled some code off of Sun's site that searches a directory tree
    JN> and finds big files. When I run the program it works except that it
    JN> does not find files over 5 GB.

    JN> I have done a few things to trouble shoot the code and I found that it
    JN> fails in two places. On the line of "elsif ((-f _) && (! -l $path))"
    JN> the file fails the -f switch test. When I do a ls -l on the directory
    JN> it shows that the file is a normal file with the same rights as the
    JN> other files in the directory. Then I took "-f _" logic check out and
    JN> printed the result of the "$size = -s $path;" code and the -s returns
    JN> a blank for the size.

    JN> Do I have to do differant things with large files? Are there bugs or
    JN> limitations on the -f and -s switches? How do I make the code work?

    Is there any mention of large files in the output of perl -V:ccflags?

    Regards,

    Nicholas

    --
    "Why shouldn't I top-post?" http://www.aglami.com/tpfaq.html
    "Meanings are another story." http://www.ifas.org/wa/glossolalia.html
    Nicholas Dronen, Aug 15, 2003
    #3
    1. Advertising

Want to reply to this thread or ask your own question?

It takes just 2 minutes to sign up (and it's free!). Just click the sign up button to choose a username and then you can ask your own questions on the forum.
Similar Threads
  1. tiewknvc9
    Replies:
    6
    Views:
    647
    Chris Uppal
    Oct 1, 2006
  2. Jason Cavett

    Preferred Size, Minimum Size, Size

    Jason Cavett, May 23, 2008, in forum: Java
    Replies:
    5
    Views:
    12,523
    Michael Jung
    May 25, 2008
  3. Keith Thompson

    Re: File Size - Big File Size

    Keith Thompson, Oct 1, 2009, in forum: C Programming
    Replies:
    6
    Views:
    279
    Phil Carmody
    Oct 3, 2009
  4. Ketchup
    Replies:
    1
    Views:
    232
    Jan Tielens
    May 25, 2004
  5. Replies:
    5
    Views:
    849
    Xho Jingleheimerschmidt
    Apr 2, 2009
Loading...

Share This Page