The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.

NAME

Filesys::DiskUsage - Estimate file space usage (similar to `du`)

SYNOPSIS

  use Filesys::DiskUsage qw/du/;

  # basic
  $total = du(qw/file1 file2 directory1/);

or

  # no recursion
  $total = du( { recursive => 0 } , <*> );

or

  # max-depth is 1
  $total = du( { 'max-depth' => 1 } , <*> );

or

  # get an array
  @sizes = du( @files );

or

  # get a hash
  %sizes = du( { 'make-hash' => 1 }, @files_and_directories );

FUNCTIONS

du

Estimate file space usage.

Get the size of files:

  $total = du(qw/file1 file2/);

Get the size of directories:

  $total = du(qw/file1 directory1/);

OPTIONS

blocks

Return the size based upon the number of blocks that the file occupies, rather than the length of the file. The two values might be different if the file is sparse.

This value should match more closely the value returned by the du(1) command.

    $total = du( { blocks => 1 } , $dir );
dereference

Follow symbolic links. Default is 0. Overrides symlink-size.

Get the size of a directory, recursively, following symbolic links:

  $total = du( { dereference => 1 } , $dir );
exclude => PATTERN

Exclude files that match PATTERN.

Get the size of every file except for dot files:

  $total = du( { exclude => qr/^\./ } , @files );
human-readable

Return sizes in human readable format (e.g., 1K 234M 2G)

  $total = du ( { 'human-readable' => 1 } , @files );
Human-readable

Return sizes in human readable format, but use powers of 1000 instead of 1024.

  $total = du ( { 'Human-readable' => 1 } , @files );
make-hash

Return the results in a hash.

  %sizes = du( { 'make-hash' => 1 } , @files );
max-depth

Sets the max-depth for recursion. A negative number means there is no max-depth. Default is -1.

Get the size of every file in the directory and immediate subdirectories:

  $total = du( { 'max-depth' => 1 } , <*> );
recursive

Sets whether directories are to be explored or not. Set to 0 if you don't want recursion. Default is 1. Overrides max-depth.

Get the size of every file in the directory, but not directories:

  $total = du( { recursive => 0 } , <*> );
sector-size => NUMBER

All file sizes are rounded up to a multiple of this number. Any file that is not an exact multiple of this size will be treated as the next multiple of this number as they would in a sector-based file system. Common values will be 512 or 1024. Default is 1 (no sectors).

  $total = du( { sector-size => 1024 }, <*> );
show-warnings => 1 | 0

Shows warnings when trying to open a directory that isn't readable.

  $total = du( { 'show-warnings' => 0 }, <*> );

1 by default.

Symlinks are assumed to be this size. Without this option, symlinks are ignored unless dereferenced. Setting this option to 0 will result in the files showing up in the hash, if make-hash is set, with a size of 0. Setting this option to any other number will treat the size of the symlink as this number. This option is ignored if the dereference option is set.

  $total = du( { symlink-size => 1024, sector-size => 1024 }, <*> );
truncate-readable => NUMBER

Human readable formats decimal places are truncated by the value of this option. A negative number means the result won't be truncated at all. Default if 2.

Get the size of a file in human readable format with three decimal places:

  $size = du( { 'human-readable' => 1 , 'truncate-readable' => 3 } , $file);

AUTHOR

Jose Castro, <cog@cpan.org>

COPYRIGHT & LICENSE

Copyright 2004 Jose Castro, All Rights Reserved.

This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself.