我正在尝试遍历目录及其所有子目录,以查看这些目录中的文件是否具有特定大小。但我不确定@files数组中的文件是否仍然包含文件大小,因此我可以比较大小(即 - size< = value_size)。有人可以提供任何指导吗?
use strict;
use warnings;
use File::Find;
use DateTime;
my @files;
my $dt = DateTime->now;
my $date = $dt->ymd;
my $start_dir = "/apps/trinidad/archive/in/$date";
my $empty_file = 417;
find( \&wanted, $start_dir);
for my $file( @files )
{
if(`ls -ltr | awk '{print $5}'`<= $empty_file)
{
print "The file $file appears to be empty please check within the folder if this is empty"
}
else
return;
}
exit;
sub wanted {
push @files, $File::Find::name unless -d;
return;
}
答案 0 :(得分:2)
我认为您可以使用此代码而不是炮轰到awk。
(不明白为什么my empty_file = 417;
是空文件大小。)
if (-s $file <= $empty_file)
另请注意,您缺少else
分支的打开和关闭大括号。
(如果找到的第一个文件不是'空',则不确定为什么要'return
'分支到return
,因为return
仅使用exit
而无法执行任何操作从函数返回。)
return
是不必要的,wanted
函数中的#!/usr/bin/perl
use strict;
use warnings;
use feature 'say';
use File::Find::Rule;
my $dir = '.';
my @files = find( file => size => "<14", in => $dir);
say -s $_, " $_" for @files;
是不合格的。
更新:可以使用File::Find::Rule解决方案。这是一个小程序,它捕获当前目录中所有小于14个字节的文件及其所有子目录。
AcquireTokenSilentAsync