Beefy Boxes and Bandwidth Generously Provided by pair Networks
laziness, impatience, and hubris

Re: Using stat()

by vladb (Vicar)
on May 24, 2002 at 04:55 UTC ( #168978=note: print w/replies, xml ) Need Help??

in reply to Using stat() to get the total size of files in a folder

Referring to The UNIX File System page, a directory is defined as following:

A directory is actually implemented as a file that has one line for each item contained within the directory. Each line in a directory file contains only the name of the item, and a numerical reference to the location of the item. The reference is called an i-number, and is an index to a table known as the i-list. The i-list is a complete list of all the storage space available to the file system.

This is exactly the reason for your confusion:

it returns 4096, but the total size of the files in that directory are 30981 bytes

The 4096 number you get is the size of that special directory 'file' that only lists directory items names and their respective i-numbers.

I believe using 'du -k' command should get you what you want. Here's an example:
my %stats = map {m/(\d+)[\t\s]+(.*)/; $2 => $1} `du -k`; for (keys %stats) { print "$_ = $stats{$_}\n"; }
Which gives this output (in my 'test' directory):
./.ssh = 5 ./temp = 273 . = 280
Tell me if this was of any use to you ;-)

$"=q;grep;;$,=q"grep";for(`find . -name ".saves*~"`){s;$/;;;/(.*-(\d+) +-.*)$/; $_=["ps -e -o pid | "," $2 | "," -v "," "];`@$_`?{print"+ $1"}:{print" +- $1"}&&`rm $1`; print$\;}

Log In?

What's my password?
Create A New User
Domain Nodelet?
Node Status?
node history
Node Type: note [id://168978]
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others studying the Monastery: (3)
As of 2022-05-28 08:18 GMT
Find Nodes?
    Voting Booth?
    Do you prefer to work remotely?

    Results (98 votes). Check out past polls.