如何在Perl中检查非空文件

时间:2011-12-27 05:29:29

标签: perl operators

我正在使用find命令查找目录中的文件。我想在继续之前检查目录中的文件是否为空(非0大小)。感谢find手册,我知道如何使用-empty选项识别空文件。

但是,我想使用Perl来检查非空文件。我怎么能这样做?

提前致谢。

2 个答案:

答案 0 :(得分:11)

有关Perl文件测试运算符的更新,请参阅perldoc perlfunc -X。你想要的是这个:

-s  File has nonzero size (returns size in bytes).

简单脚本显示如何使用File::Find

#!/usr/bin/perl -w
use strict;

use File::Find;

# $ARGV[0] is the first command line argument
my $startingDir = $ARGV[0];

finddepth(\&wanted, $startingDir);

sub wanted
{
    # if current path is a file and non-empty
    if (-f $_ && -s $_)
    {
        # print full path to the console
        print $File::Find::name . "\n";
    }
}

在这个例子中,我将输出发送到控制台。要将它传递给文件,您可以使用shell输出重定向,例如./findscript.pl /some/dir > somefile.out

答案 1 :(得分:1)

请查看perldoc http://perldoc.perl.org/functions/-X.html

-z  File has zero size (is empty).