Как найти все файлы, которые соответствуют определенным критериям (-M, возраст модификации в днях) в списке каталогов, но не в их подкаталогах?
-M
Я хотел использовать File :: Find, но похоже, что он всегда идет и в подкаталогах.
@files = grep { -f && (-M) < 5 } <$_/*> for @folders;
Используйте readdir или File :: 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; }
Вы можете установить File :: Find :: prune в функции 'wanted', чтобы пропустить деревья каталогов. Добавьте что-то вроде $ File :: Find :: prune = 1 if (-d && $ File :: Find :: name ne ".");