在 Perl 中,如何获取目录中的所有文件,但不能获取子目录中的所有文件?
题
如何找到符合特定条件的所有文件(-M
, ,修改期限(以天为单位))在目录列表中,但不在其子目录中?
我想使用 File::Find,但看起来它也总是转到子目录。
解决方案
@files = grep { -f && (-M) < 5 } <$_/*> for @folders;
其他提示
使用 读目录 或者 文件::Slurp::read_dir 和这个结合 grep.
#!/usr/bin/perl
use strict;
use warnings;
use File::Slurp;
use File::Spec::Functions qw( canonpath catfile );
my @dirs = (@ENV{qw(HOME TEMP)});
for my $dir ( @dirs ) {
print "'$dir'\n";
my @files = grep { 2 > -M and -f }
map { canonpath(catfile $dir, $_) } read_dir $dir;
print "$_\n" for @files;
}
您可以在“被通缉”功能中设置文件::查找::修剪跳过目录树。添加类似$文件::查找::修剪= 1,如果(-d && $文件::查找::名字呢 “”);
不隶属于 StackOverflow