| Events |
|
|
|
|
|
|
|
|
| Services |
|
|
|
|
| Interact |
|
|
| -
|
| -
|
|
|
|
|
| About Us |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Re: [vox-tech] Perl help requested
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [vox-tech] Perl help requested
--On Tuesday, February 10, 2004 09:56:36 -0800 Richard Crawford
<rscrawford@mossroot.com> wrote:
I'm trying to write a Perl application that will go through a directory
and give the amount of space used by each directory, including each
subdirectory. So, for example, if myDirectory1 has three files
totalling 150K and two subdirectories (mySubDirectoryA, with 20K of
files, and mySubDirectoryB with 50K of files), I'd like to see output
like this:
DIRECTORY SIZE
======================
myDirectory1 220K
You know, you're basically describing the "du" program. Assuming du
doesn't meet your needs as-is, your perl script could launch du with
appropriate arguments and massage the output as needed.
For an all-perl solution, I'd probably use File::Find to traverse the
directory structure of interest and track total sizes using a hash table
of directory paths. For each file you'll need two pieces of information:
1) its size, obtained by stat'ing it.
2) its pathname, which should be available through a File::Find variable.
You'll parse this into all of the ((sub-)sub-)directories containing the
file, in order to collate total sizes by directory.
You'll want to consider the following:
1) Are the sizes of the directories themselves part of the totals? Keep
in mind that if the directory tree were moved to a different filesystem,
the directories might a different amount of space.
2) What to do with hard links? If a file appears twice within the
directory tree, does it count once or twice?
3) What to do with symlinks? The symlink itself takes up a small amount
of space, and it refers to a file which might or might not be within the
directory tree.
There's no one right way to handle these; it just depends on what you're
doing with the totals.
--
"Grand Funk Railroad paved the way for Jefferson Airplane, which cleared
the way for Jefferson Starship. The stage was now set for the Alan Parsons
Project, which I believe was some sort of hovercraft." - Homer Simpson
Kenneth Herron Kherron@newsguy.com 916-366-7338
_______________________________________________
vox-tech mailing list
vox-tech@lists.lugod.org
http://lists.lugod.org/mailman/listinfo/vox-tech
|
|