我正在使用find
命令查找目录中的文件。我想在继续之前检查目录中的文件是否为空(非0大小)。感谢find
手册,我知道如何使用-empty
选项识别空文件。
但是,我想使用Perl来检查非空文件。我怎么能这样做?
提前致谢。
答案 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).